我观察到可以在不使用聚合函数Group by的情况下使用Count函数。例如:
Select Count(*) from Employee
如果不使用聚合函数,肯定会返回所有行的计数。那我们在哪里真的需要使用group by?
答案 0 :(得分:3)
省略GROUP BY
意味着整个表是一个组。有时您希望有多个组。请考虑以下示例:
SELECT month, SUM(sales) AS total_sales
FROM all_sales
GROUP BY month;
此查询为您提供逐月的销售明细。如果省略month
和GROUP 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