当前位置:首页 > 实用技巧 >

sql什么时候使用groupby(sql group by高级用法)

来源:原点资讯(www.yd166.com)时间:2024-01-02 12:45:58作者:YD166手机阅读>>

sql什么时候使用groupby,sql group by高级用法(1)

概述

GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表。

GROUP BY必须得配合聚合函数来用,分组之后你可以计数(COUNT),求和(sum),求平均数(AVG)等。

常用聚合函数

  • count() 计数
  • sum() 求和
  • avg() 平均数
  • max() 最大值
  • min() 最小值

语法

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;

例子

接下来我们将通过例子进行理解:

我们现在有一张dept_emp表共四个字段,分别是emp_no(员工编号),dept_no(部门编号),from_date(起始时间),to_date(结束时间),记录了员工在某一部门所处时间段,to_date等于9999-01-01的表示目前还在职。

sql什么时候使用groupby,sql group by高级用法(2)

image.png

部门人数

我们现在想知道每个部门有多少名在职员工,步骤如下:

  1. 筛选在职员工 where to_date='9999-01-01';
  2. 对部门进行分组group by dept_no
  3. 对员工进行计数 count(emp_no)

完整语句如下:

SELECT dept_no as 部门, count( emp_no) as 人数 FROM dept_emp WHERE to_date = '9999-01-01' GROUP BY dept_no

结果

sql什么时候使用groupby,sql group by高级用法(3)

image.png

部门名称

我们上一步分组之后得到的结果是部门编号,下一步我们可以通过departments去关联出部门名称,语句如下:

SELECT ( SELECT d.dept_name FROM departments d WHERE de.dept_no = d.dept_no ) AS 部门, count( de.emp_no ) AS 人数 FROM dept_emp de WHERE de.to_date = '9999-01-01' GROUP BY de.dept_no

结果

sql什么时候使用groupby,sql group by高级用法(4)

image.png

HAVING

当然提到GROUP BY 我们就不得不提到HAVING,HAVING相当于条件筛选,但它与WHERE筛选不同,HAVING是对于GROUP BY对象进行筛选。

我们举个例子:

每个部门人数都有了,那如果我们想要进一步知道员工人数大于30000的部门是哪些,这个时候就得用到HAVING了。

语句如下:

SELECT ( SELECT d.dept_name FROM departments d WHERE de.dept_no = d.dept_no ) AS 部门, count( de.emp_no ) AS 人数 FROM dept_emp de WHERE de.to_date = '9999-01-01' GROUP BY de.dept_no HAVING count( de.emp_no ) > 30000

结果

sql什么时候使用groupby,sql group by高级用法(5)

image.png

以上便是GROUP BY的一些基本使用方法介绍,如有其他问题,欢迎留言~

作者:Awesome_Tang

链接:https://www.jianshu.com/p/8b135d373df1

来源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

,

栏目热文

sql语句groupby用法(sql中groupby用法和where区别)

sql语句groupby用法(sql中groupby用法和where区别)

GROUP BY 语句可结合一些聚合函数来使用 GROUP BY 语句GROUP BY 语句用于结合聚合函数,根据一个或...

2024-01-02 12:33:12查看全文 >>

sqlserverpolybase关了怎么开(sql安装中polybase配置选哪个)

sqlserverpolybase关了怎么开(sql安装中polybase配置选哪个)

IT之家11月7日消息 在Microsoft Ignite 2019 大会上,微软正式发布了新一代数据库产品SQL Se...

2024-01-02 13:03:03查看全文 >>

sqlserver 字符串操作函数(sql server 字符串包含语句怎么写)

sqlserver 字符串操作函数(sql server 字符串包含语句怎么写)

今天给大家分享一下SQLServer常用的字符串函数知识笔记,希望对大家能有所帮助!1、ASCII(字符串表达式)作用:...

2024-01-02 12:53:33查看全文 >>

王者荣耀奕星改版了吗(王者荣耀奕星怎么加强)

王者荣耀奕星改版了吗(王者荣耀奕星怎么加强)

大家好我是指尖,英雄重做从来都是伴随着争议的声音,有本命玩家的拒绝,有普通玩家的期待,有支持,也有反对,但目前为止没有一...

2024-01-02 12:27:25查看全文 >>

王者荣耀奕星为什么这么厉害(王者荣耀奕星为啥没伤害)

王者荣耀奕星为什么这么厉害(王者荣耀奕星为啥没伤害)

大家好我是指尖,弈星英雄重做,这个引发的反响可比梦奇重做的时候小了不少,虽然英雄重做对大多数人来说都是一个利好的行为,...

2024-01-02 12:57:42查看全文 >>

sqlserver怎么附加queryfile(怎么打开sql server query文件)

sqlserver怎么附加queryfile(怎么打开sql server query文件)

一、向已有数据库添加文件及文件组语法:USE <用户数据库名>GOALTER DATABASE <&...

2024-01-02 12:49:14查看全文 >>

sql中group by用法(sql中groupby的用法)

sql中group by用法(sql中groupby的用法)

1. group by的常规用法group by的常规用法是配合聚合函数,利用分组信息进行统计,常见的是配合max等聚合...

2024-01-02 12:51:32查看全文 >>

男人保健养生的正确方法(男士保健养生十大项目)

男人保健养生的正确方法(男士保健养生十大项目)

随着生活节奏的加快,男性的竞争和工作压力也会变得越来越大,很多男性夜生活也会变得更加的丰富,男性在晚上很多的事情不能做,...

2024-01-02 13:13:38查看全文 >>

男士保健养生的小知识(中医男士养生保健)

男士保健养生的小知识(中医男士养生保健)

现如今大多数人的生活条件都有了明显的提高,可以把更多的时间和精力放到养生上面,但是许多年轻男性却会忽略自身的养生,认为自...

2024-01-02 12:41:27查看全文 >>

男性养生保健五大原则(男人保健养生的正确方法)

男性养生保健五大原则(男人保健养生的正确方法)

作者:衣晓峰 赵兵医学研究告诉我们,人类的健康状况和寿命的长短,虽然与先天禀赋的遗传因素有密切关系,但是后天的调摄养生也...

2024-01-02 13:00:24查看全文 >>

文档排行