本文主要介绍了在SQL中进行分组后如何获取分组合计及总计的方法,提供了四个具体的SQL语句示例。这些技巧对于数据分析和报表生成等任务非常实用。 1)一次性得到分组合计和总计的SQL语句: ```sql SELECT 分组字段 FROM 表 GROUP BY 分组字段 COMPUTE SUM(COUNT(*)) ``` 在这个语句中,`GROUP BY 分组字段`将数据按照指定的字段进行分组,然后`COMPUTE SUM(COUNT(*))`计算每个组内的记录总数,并给出所有记录的总计。 2)分组合计方法1: ```sql SELECT COUNT(*) FROM (SELECT 分组字段 FROM 表 GROUP BY 分组字段) 别名 ``` 这种方法首先创建一个子查询,对原始表按分组字段分组,然后外部查询计算子查询中每个组的记录数。 3)分组合计方法2: ```sql SELECT COUNT(*) FROM (SELECT DISTINCT 分组字段 FROM 表) 别名 ``` 这种方法使用`DISTINCT`关键字去除重复的分组字段值,再计算不重复分组的数量。 4)统计分组后的种类数: ```sql SELECT COUNT(DISTINCT 分组字段) FROM 表 ``` 这将返回分组字段中不同值的数量,即分组后的种类数。 此外,文中还给出了两个实际应用的例子: 例子1: ```sql SELECT JSSKQK_JGH FROM SJ_JSSKQK WHERE JSSKQK_JGH IN (SELECT JSJBXX_JGH FROM SJ_JSJBXX WHERE JSJBXX_JSLXM1 = 1) GROUP BY JSSKQK_JGH HAVING ((SUM(JSSKQK_SSKCXS1) / 40) > 5) ``` 此查询首先筛选满足条件的记录,然后按JSSKQK_JGH分组,通过HAVING子句筛选出满足条件的组,最后可以通过嵌套查询来计算符合条件的组数量。 例子2: 这是一个在Oracle环境中如何获取每个分组内最大日期的问题。有两个方法: ```sql -- 方法1 SELECT * FROM A out WHERE (A, MAX(B)) IN ( SELECT A, MAX(B) FROM A GROUP BY A ) -- 方法2 SELECT * FROM ( SELECT A, ROW_NUMBER() OVER (PARTITION BY A ORDER BY B DESC) as row_num FROM A ) WHERE row_num = 1 ``` 这两个方法都可以找到每个分组内B列的最大值对应的完整记录。 以上是关于分组和总计的SQL操作,它们在数据库查询中起到关键作用,能够帮助我们更有效地分析和理解数据。
剩余11页未读,继续阅读
- 粉丝: 5
- 资源: 914
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- OptiX传输试题与SDH基础知识
- C++Builder函数详解与应用
- Linux shell (bash) 文件与字符串比较运算符详解
- Adam Gawne-Cain解读英文版WKT格式与常见投影标准
- dos命令详解:基础操作与网络测试必备
- Windows 蓝屏代码解析与处理指南
- PSoC CY8C24533在电动自行车控制器设计中的应用
- PHP整合FCKeditor网页编辑器教程
- Java Swing计算器源码示例:初学者入门教程
- Eclipse平台上的可视化开发:使用VEP与SWT
- 软件工程CASE工具实践指南
- AIX LVM详解:网络存储架构与管理
- 递归算法解析:文件系统、XML与树图
- 使用Struts2与MySQL构建Web登录验证教程
- PHP5 CLI模式:用PHP编写Shell脚本教程
- MyBatis与Spring完美整合:1.0.0-RC3详解