SQL指南-GROUP BY 和 HAVING
聚会函数 (如 SUM) 常需要附加GROUP BY
-----------------------------------------------
GROUP BY...
GROUP BY... 被附加于SQL 是因为聚会函数 (如 SUM) 每次都返回所有列值的合计,没有GROUP BY函数是不可能找到列值的单个分组的合计数。
语法
SELECT column,SUM(column) FROM table GROUP BY column |
-----------------------------------------------
GROUP BY 示例
这个 "Sales" 表:
Company | Amount |
---|---|
W3Schools | 5500 |
IBM | 4500 |
W3Schools | 7100 |
和这个SQL语句:
SELECT Company, SUM(Amount) FROM Sales |
返回这个结果:
Company | SUM(Amount) |
---|---|
W3Schools | 17100 |
IBM | 17100 |
W3Schools | 17100 |
上面的代码是不正确的,因为被返回的列不是部分合计。GROUP BY 子句将解决这个问题。
SELECT Company,SUM(Amount) FROM Sales GROUP BY Company |
返回结果:
Company | SUM(Amount) |
---|---|
W3Schools | 12600 |
IBM | 4500 |
-----------------------------------------------
HAVING...
HAVING... 被附加到SQL语句是因为WHER关键字不能被用于聚会函数 (如 SUM),并且没有HAVING...它将不可能测试结果条件。
语法:
SELECT column,SUM(column) FROM table GROUP BY column HAVING SUM(column) condition value |
这个 "Sales" 表:
Company | Amount |
---|---|
W3Schools | 5500 |
IBM | 4500 |
W3Schools | 7100 |
和这个SQL语句:
SELECT Company,SUM(Amount) FROM Sales GROUP BY Company HAVING SUM(Amount)>10000 |
返回这个结果
Company | SUM(Amount) |
---|---|
W3Schools | 12600 |