Oracle中的GROUP BY子句用于将查询结果按照一个或多个列进行分组,以便对每个组执行聚合函数(如COUNT、SUM、AVG等)
SELECT column1, column2, aggregate_function(column3)
FROM table_name
WHERE conditions
GROUP BY column1, column2;
使用GROUP BY子句时,SELECT子句中只能包含以下内容:
使用HAVING子句过滤分组结果:
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1
HAVING COUNT(*) > 10;
SELECT column1, column2, SUM(column3)
FROM table_name
GROUP BY ROLLUP (column1, column2);
这将首先按照column1和column2进行分组,然后按照column1进行分组,最后对所有记录进行汇总。
SELECT column1, column2, SUM(column3)
FROM table_name
GROUP BY CUBE (column1, column2);
这将按照column1和column2的所有可能组合进行分组和汇总。
SELECT column1, column2, SUM(column3)
FROM table_name
GROUP BY GROUPING SETS ((column1, column2), (column1), (column2), ());
这将按照column1和column2进行分组,然后分别按照column1和column2进行分组,最后对所有记录进行汇总。
与其他子句一起使用GROUP BY:
优化GROUP BY查询性能:
总之,熟练掌握Oracle中的GROUP BY子句及其相关技巧,可以帮助你更高效地处理数据和编写SQL查询。