group by的所有用法
时间: 2023-06-22 19:31:49 浏览: 78
group by用法.doc
GROUP BY 是 SQL 中经常使用的一个关键字,可以将查询结果按照指定列进行分组,并对每组数据进行聚合操作。下面是 GROUP BY 的所有用法:
1. 基本用法
GROUP BY 常用于 SELECT 语句中,用于按照一个或多个列进行分组。例如:
```
SELECT column1, SUM(column2) FROM table1
GROUP BY column1;
```
这个查询将返回按照 column1 列分组的结果,对于每个分组,计算 column2 列的总和。
2. 多列分组
可以按照多个列进行分组,只需要在 GROUP BY 子句中指定多个列即可。例如:
```
SELECT column1, column2, SUM(column3) FROM table1
GROUP BY column1, column2;
```
这个查询将返回按照 column1 和 column2 列分组的结果,对于每个分组,计算 column3 列的总和。
3. 分组过滤
可以使用 HAVING 子句对分组后的结果进行过滤,类似于 WHERE 子句对整个表进行过滤。例如:
```
SELECT column1, SUM(column2) FROM table1
GROUP BY column1
HAVING SUM(column2) > 100;
```
这个查询将返回按照 column1 列分组的结果,对于每个分组,计算 column2 列的总和,然后过滤掉总和小于 100 的分组。
4. 分组排序
可以使用 ORDER BY 子句对分组后的结果进行排序。例如:
```
SELECT column1, SUM(column2) FROM table1
GROUP BY column1
ORDER BY SUM(column2) DESC;
```
这个查询将返回按照 column1 列分组的结果,对于每个分组,计算 column2 列的总和,然后按照总和降序排序。
5. 聚合函数
GROUP BY 常与聚合函数一起使用,可以对每个分组进行聚合操作。常用的聚合函数有 COUNT、SUM、AVG、MAX 和 MIN 等。
例如:
```
SELECT column1, COUNT(*) FROM table1
GROUP BY column1;
```
这个查询将返回按照 column1 列分组的结果,对于每个分组,计算该组的行数。
6. ROLLUP 和 CUBE
ROLLUP 和 CUBE 是 SQL 的标准扩展,可以对 GROUP BY 的分组结果再进行分组,从而生成更多的汇总结果。ROLLUP 用于生成部分汇总结果,而 CUBE 则可以生成所有可能的汇总结果。
例如:
```
SELECT column1, column2, SUM(column3) FROM table1
GROUP BY ROLLUP(column1, column2);
```
这个查询将返回按照 column1 和 column2 列分组的结果,对于每个分组,计算 column3 列的总和,并生成一些部分汇总结果。
```
SELECT column1, column2, SUM(column3) FROM table1
GROUP BY CUBE(column1, column2);
```
这个查询将返回按照 column1 和 column2 列分组的结果,对于每个分组,计算 column3 列的总和,并生成所有可能的汇总结果。
阅读全文