SQL分组查询:分组合计与总计解析
127 浏览量
更新于2024-08-29
收藏 326KB PDF 举报
本文主要介绍了在SQL中进行分组后如何获取分组合计以及总计的各种方法,包括一次性得到分组合计和总计、分组合计的不同实现方式,以及统计分组后的种类数。通过实例展示了如何在分组基础上进行进一步的聚合操作。
1. 一次性得到分组合计和总计:
使用`GROUP BY`语句对特定字段进行分组,然后使用`COMPUTE SUM`函数计算每个分组的总和,同时得到所有数据的总计。例如:
```sql
SELECT 分组字段 FROM 表
GROUP BY 分组字段
COMPUTE SUM(COUNT(*))
```
这将返回每个分组的数量以及整个表的总数。
2. 分组合计1:
通过嵌套查询来获取每个分组的计数。首先对分组字段进行分组,然后在外层查询中计算这些分组的总数。例如:
```sql
SELECT COUNT(*)
FROM (
SELECT 分组字段 FROM 表
GROUP BY 分组字段
) 别名
```
3. 分组合计2:
如果需要去除重复项,可以使用`DISTINCT`关键字。这会计算不同分组字段值的个数:
```sql
SELECT COUNT(*)
FROM (
SELECT DISTINCT 分组字段 FROM 表
) 别名
```
4. 统计分组后的种类数:
统计分组后的种类数通常意味着计算分组字段的不同值的数量。这可以通过去除重复的分组字段值并计算它们的个数来实现,与分组合计2的方法相似。
5. 示例1:分组合计并过滤:
在这个例子中,先根据`JSSKQK_JGH`进行分组,并应用条件`(SUM(JSSKQK_SSKCXS1) / 40) > 5`,筛选出符合条件的记录。然后,外部查询计算满足条件的分组数量。
```sql
SELECT COUNT(*)
FROM (
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)
) t
```
6. 示例2:获取分组后最大日期的记录:
这个问题是在分组`A`的基础上找出每个组内`B`列的最大值。有两种方法可以实现:
- 方法1:
```sql
SELECT * FROM A out
WHERE (A, B) IN (
SELECT A, MAX(B) FROM A
GROUP BY A
)
```
- 方法2:
```sql
SELECT * FROM (
SELECT A, ROW_NUMBER() OVER(PARTITION BY A ORDER BY B DESC) AS rn
FROM A
) t
WHERE t.rn = 1
```
这些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 上传
点击了解资源详情
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
weixin_38513565
- 粉丝: 4
- 资源: 899
最新资源
- CS766_Project
- php+mysql学生成绩查询系统(源代码+论文).rar
- PaintApp:使用 Java Swing 进行绘制分配
- 遗传算法求旅行商问题_raterdj_旅行商_遗传算法求解旅行商问题_遗传算法_
- galopush:一个使用golang实现的push代理,推送协议采用自定义二进制协议,传输数据简单加密,业务实现push,callback,im,后台消息系统采用nsq
- Deadline:通过获取自动生成的开发生命周期时间表来征服您的下一个编程项目
- OGC-WMS-Discovery-Portal:一个开发项目,旨在建立一个地理空间门户网站,专门通过使用多模式或跨模式检索技术来发现OGC Web地图服务
- 仿iphone的listview下拉更新(实用1).zip
- node-osu:与OSU API进行交互的库
- sh代码-linux- 1.查看系统信息
- g.723.1.rar_G. 723_g.723_g.723.1
- Ruby Rose HD Wallpapers New Tab Theme-crx插件
- Block_DDD_Basic_to_Advance:在此存储库中,我放置了取决于BLoC和DDD体系结构的代码
- CEPII_dist_cepii_CEPII_arcgis_
- mm-ws:这是我儿子。 自2017年以来,我一直在开发此Web服务模型以了解有关PHP的更多信息,因为在完成许多项目之后以及每次我开始新项目时都必须构建环境。 最初,它是一个完整的前端后端模块,但是由于当今的原因,我删除了前端页面并将其仅转换为后端。 我当然有很多关于PHP和下一发行版的知识,但是这个项目多年来对我的工作非常有用。 但是现在,我可以自由分享。 每次建议都是有效的。 这个项目是从头开始构建的,没有框架,每个功能都是我自己的实现,因此请批评家好
- website-build-helper:网站构建助手应用程序。 (节点 webkit 应用程序)