使用聚合函数Group by

时间:2016-05-25 15:44:02

标签: sql select group-by

我观察到可以在不使用聚合函数Group by的情况下使用Count函数。例如:

Select Count(*) from  Employee 

如果不使用聚合函数,肯定会返回所有行的计数。那我们在哪里真的需要使用group by?

2 个答案:

答案 0 :(得分:3)

省略GROUP BY意味着整个表是一个组。有时您希望有多个组。请考虑以下示例:

SELECT month, SUM(sales) AS total_sales
FROM all_sales
GROUP BY month;

此查询为您提供逐月的销售明细。如果省略monthGROUP BY子句,则只会收到可能没有所需粒度的所有时间的总销售额。

您还可以按多列进行分组,仍然可以提供更精细的细节:

SELECT state, city, COUNT(*) AS population
FROM all_people
GROUP BY state, city;

此外,使用GROUP BY允许我们使用HAVING条款。这让我们可以过滤组。使用上面的示例,我们可以将结果过滤到超过1,000,000人的城市:

SELECT state, city, COUNT(*) AS population
FROM all_people
GROUP BY state, city
HAVING COUNT(*) > 1000000;

答案 1 :(得分:1)

group by子句用于将聚合结果分解为唯一值组。例如,让我们说你不想知道你有多少雇员,但每个名字有多少(例如,两个Gregs,一个Adam和三个Scotts):

SELECT   first_name, COUNT(*)
FROM     employee
GROUP BY first_name