SQL中的GROUP BY语句用于借助某些function将相同的数据分组。注意这里的借助二字。也就是说,如果特定的列在不同的行中具有相同的值,则它将这些行排列在一组中。
关于GROUP BY的使用要点:
- GROUP BY子句需要和SELECT语句一起使用。
- 在查询中,GROUP BY子句放在WHERE子句之后。
- 在查询中,如果使用GROUP BY子句,则将其放在ORDER BY子句之前。
其语法格式如下:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
例,假设有customers表如下:
现在假设有如下sql语句:
SELECT NAME, SUM(SALARY) FROM Employee
GROUP BY NAME;
则其查询结果为:
从上面的输出中可以看到,具有重复名称的行被分组在同一列下,它们对应的SALARY是重复行的SALARY之和。 SQL的SUM()函数用于计算总和。
也可以group by多个column。
例如:GROUP BY column1,column2。 这个写法的意思是将具有相同的列1和列2值的所有行放在一组中。例如有如下的表students:
现有sql语句如下:
SELECT SUBJECT, YEAR, Count(*)
FROM Student
GROUP BY SUBJECT, YEAR;
其查询结果为:
HAVING
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。
其用法如下:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;