什么是group by
在Oracle数据库中,如果需要根据某一列或者某几列的值进行分类统计,就需要用到group by语句。group by语句的作用是将查询结果按照指定的列分组,然后对每个分组进行聚合计算。group by语句常与聚合函数一起使用,例如sum、count、avg、max等。
使用group by语句
group by语句的基本语法如下:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
其中,column_name是需要分组的列,aggregate_function是聚合函数,table_name是需要从中检索数据的表,operator是比较运算符,value是与column_name进行比较的值。
使用单个列进行分组
使用单个列进行group by操作时,查询结果会按照该列的值进行分组,该列的值相同的行会分为同一组。
SELECT department, SUM(salary)
FROM employees
GROUP BY department;
这个例子中,查询结果会按照department这一列的值进行分组,同一department的员工的薪资会被加起来。
使用多个列进行分组
使用多个列进行group by操作时,查询结果会按照这些列的值进行分组,列值都相同的行会分为同一组。
SELECT department, position, SUM(salary)
FROM employees
GROUP BY department, position;
这个例子中,查询结果会按照department和position这两列的值进行分组,同一department和position的员工的薪资会被加起来。
在group by语句中使用having子句
having子句用于过滤group by的结果,只返回符合特定条件的分组。
SELECT department, SUM(salary)
FROM employees
GROUP BY department
HAVING SUM(salary) > 1000000;
这个例子中,查询结果会按照department这一列的值进行分组,并且只返回薪资总和大于1000000的分组。
总结
使用group by可以对查询结果进行分类汇总,根据需要使用单个或者多个列进行分组。同时,还可以使用having子句对分组结果进行筛选。