前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >十、GROUP BY 和 HAVING 的使用

十、GROUP BY 和 HAVING 的使用

作者头像
喵叔
发布2021-06-25 15:14:45
1K0
发布2021-06-25 15:14:45
举报
文章被收录于专栏:喵叔's 专栏
一、group by 应用场景

在实际应用中我们会遇到如下的场景:

  • 公司想了解每个部门有多少员工;
  • 班主任想统计每科第一名的成绩;
  • 连锁店想知道每个门店男女员工的数量以及平均年龄。

这时我们就可以使用 group by 语句来解决这类需求。从字面上来理解,group by 表示根据某种规则对数据进行分组,他必须配合聚合函数进行使用,对数据进行分组后可以进行 countsumavgmaxmin 运算。语法如下:

代码语言:javascript
复制
SELECT column_name, aggregate_function(column_name) 
FROM table_name
GROUP BY column_name

TIP: aggregate_function:表示聚合函数 group by :可以对一列或者多列进行分组

例如:

  1. 查询出全校有多少名男学生和女学生
代码语言:javascript
复制
select sex, count(*) from student group by sex;
  1. 查询每个班级有多少学生
代码语言:javascript
复制
select class, count(*) from student group by class;
  1. 查询每个门店员工薪资总和
代码语言:javascript
复制
select dept,sum(salary) from employee group by dept;
二、having 的使用

在 SQL 中增加 HAVING 子句原因是, WHERE 关键子无法与聚合函数一起使用。 HAVING 子句可以对分组后的各组数据进行筛选。语法如下:

代码语言:javascript
复制
SELECT column_name,aggregate_funtion(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

例如:

  1. 查询人数小于30人的班级
代码语言:javascript
复制
select class,count(*) from student group by class having count(*)<30
  1. 查询每个门店薪资大于5000的员工
代码语言:javascript
复制
select dept,max(salary) from employee group by dept having max(salary)>5000
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、group by 应用场景
  • 二、having 的使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档