SQL分组查询技巧:分组合计与总计解析
79 浏览量
更新于2024-08-29
收藏 326KB PDF 举报
本文主要介绍了在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操作,它们在数据库查询中起到关键作用,能够帮助我们更有效地分析和理解数据。
2021-01-19 上传
2022-06-02 上传
点击了解资源详情
2021-06-12 上传
2020-09-10 上传
2020-12-15 上传
2009-09-21 上传
2007-11-27 上传
2015-09-03 上传
weixin_38502915
- 粉丝: 5
- 资源: 914
最新资源
- PureMVC AS3在Flash中的实践与演示:HelloFlash案例分析
- 掌握Makefile多目标编译与清理操作
- STM32-407芯片定时器控制与系统时钟管理
- 用Appwrite和React开发待办事项应用教程
- 利用深度强化学习开发股票交易代理策略
- 7小时快速入门HTML/CSS及JavaScript基础教程
- CentOS 7上通过Yum安装Percona Server 8.0.21教程
- C语言编程:锻炼计划设计与实现
- Python框架基准线创建与性能测试工具
- 6小时掌握JavaScript基础:深入解析与实例教程
- 专业技能工厂,培养数据科学家的摇篮
- 如何使用pg-dump创建PostgreSQL数据库备份
- 基于信任的移动人群感知招聘机制研究
- 掌握Hadoop:Linux下分布式数据平台的应用教程
- Vue购物中心开发与部署全流程指南
- 在Ubuntu环境下使用NDK-14编译libpng-1.6.40-android静态及动态库