group by 和having的用法
时间: 2023-09-27 09:09:07 浏览: 40
group by用于将数据按照某个字段进行分组,常用于聚合函数的计算,例如求和、平均数等。having用于对分组后的数据进行筛选,可以筛选出符合条件的分组结果。having通常与group by一起使用。
示例:
假设有一个销售订单表orders,包含以下字段:order_id, customer_id, order_date, order_amount。
按照顾客(customer_id)分组,并统计每个顾客的订单总金额(order_amount)大于1000的结果。
```
SELECT customer_id, SUM(order_amount) as total_amount
FROM orders
GROUP BY customer_id
HAVING total_amount > 1000;
```
解释:先按照customer_id字段进行分组,然后计算每组的order_amount总和,并将结果命名为total_amount。最后,筛选出total_amount大于1000的分组结果。
另一个示例:
假设有一个学生表students,包含以下字段:student_id, name, grade, score。
按照年级(grade)分组,并统计每个年级的平均分(score)大于80的学生姓名(name)和平均分(score)的结果。
```
SELECT grade, name, AVG(score) as avg_score
FROM students
GROUP BY grade, name
HAVING avg_score > 80;
```
解释:先按照grade和name字段进行分组,然后计算每组的score平均值,并将结果命名为avg_score。最后,筛选出avg_score大于80的分组结果,并将相应的学生姓名和平均分列出来。