SQL语句之分组查询–GROUP BY(group by)

语法

     select 聚合函数,列(要求出现在group by的后面)from 表where 筛选条件group by 分组的列表order by 子句

注意:除了出现在group by后面的字段,如果要在select后查询其他字段,必须用聚合函数进行聚合

特点:分组查询中的筛选条件分为两类:
分组前筛选: 数据源是原始表,用where,放在group by前面,因为在分组前筛选
分组后筛选:数据源是分组后的结果集 ,用having,放在group by后面,因为在分组后进行筛选

例1:

select max(salary),job_id
from employees
group by job_id;

目的:查询最高工资的员工

例2:

select avg(salary),department_id
from employees
where email like '%a%'
group by department_id

目的:查询邮箱中包含a字符的每个部门的平均工资

例3:

select max(salary),manager_id
from employees
where commission_pct is not null
group by manager_id

目的:查询有奖金的每个领导手下最高工资的员工工资

例4:

select  count(*),department_id
from employees
group by department_id
having count(*) > 2;

目的:查询哪个部门的员工个数大于2
思路:

  1. 查询每个部门的员工个数;
  2. 根据1的结果进行筛选,查询哪个部门员工个数大于2

注:分组前的筛选用where,分组后的筛选用having

例5:

select max(salary),job_id
from employees
where commission_pct is not null
group by job_id
having max(salary) > 12000;

目的:查询每个工种有奖金的员工的最高工资大于12000的工种编号和最高工资
思路:

  1. 查询每个工资有奖金的员工的最高工资;
  2. 根据最高工资筛选大于12000的工种编号;

按表达式或函数进行筛选

例5:

select count(*)  ,length(last_name) as len_name
from employees
group by length(last_name)
having count(*) > 5;

目的:按照员工姓名长度分组,查询每一组员工个数,筛选员工个数大于5的有哪些

按照多个字段分组

例6:

select avg(salary),department_id,job_id
from employees
where department_id is not null
group by department_id,job_id
order by avg(salary) desc;

目的:查询每个部门每个工种的员工平均工资,并且按照平均工资的高低排序

SQL语句之分组查询--GROUP BY(group by)相关推荐

  1. SQL语句:分组查询

    在对数据表中数据进行统计时,可能需要按照一定的类别分别进行统计.比如查询每个部门的员工数. 使用GROUP BY按某个字段,或者多个字段中的值,进行分组,字段中值相同的为一组 语法格式 查询列表必须是 ...

  2. 使用mysql语句进行分组查询

    使用mysql语句进行分组查询 1 作用 对整个数据表的某几个字段进行分组,然后通过分组函数得到我们想要的结果 2 如何用 2.1 只分一个组 2.1.1 本质 就是根据分组字段把整个表的数据分为几组 ...

  3. JavaWeb学习笔记(数据库、SQL语句、数据查询语法、完整性约束、编码、备份和恢复数据、多表查询)

    数据库.SQL语句.数据查询语法.完整性约束.编码.备份和恢复数据.多表查询 JavaWeb学习笔记 数据库 数据库概念 基本命令 启动和关闭mysql服务器 客户端登录退出mysql SQL语句 S ...

  4. 【转】在SQL Server中通过SQL语句实现分页查询

    在SQL Server中通过SQL语句实现分页查询 2008年01月06日 星期日 12:28 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY ...

  5. sql语句提高数据库查询效率

    可以通过以下多个方面优化sql语句提高数据库查询效率 1. 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2. 应尽量避免在 where 子 ...

  6. 在JDBC中实现SQL语句的模糊查询

    在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...

  7. SQL语句多表查询:【多表连查】和【子查询】

    SQL语句多表查询:[多表连查]和[子查询] 说明:insert.update.delete只针对[一张表]执行操作. 说明:select可以查询一张表.也可以查询多张表. 说明:多表查询分为:[多表 ...

  8. mongodb 跟踪SQL语句及慢查询收集

    有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行  ./mongostat -port 端口号  ...

  9. mysql语句统计总数_一条sql语句实现统计查询_MySQL

    bitsCN.com 一条sql语句实现统计查询 如图:程序员在进行如下的统计时,现在提供两种实现方案: 方案一:运用 SEKECT CASE WHEN EXPLAIN SELECT count(*) ...

最新文章

  1. 设计模式-合成复用原则
  2. 今日 Paper | 协作蒸馏;人脸反欺骗;人脸表示;3D-CariGAN等
  3. 【运筹学】表上作业法 ( 示例 | 使用 “ 最小元素法 “ 找初始基可行解 )
  4. Genymotion的使用 -- A Faster Android Emulator
  5. Redis集群方案,Codis安装测试
  6. 10 个常用的软件架构模式
  7. SpringCloud版本名字
  8. python实时策略_Python策略模式
  9. 【渝粤教育】电大中专电子商务网站建设与维护 (13)作业 题库
  10. python用pyecharts画柱状图_小白学Python(13)——pyecharts 绘制 柱状图/条形图 Bar
  11. SPSS基础教程:认识SPSS的主要窗口
  12. Linux 程序编译过程详解
  13. MUI框架学习——了解MUI
  14. 解决 Win7 远程桌面 已停止工作的问题
  15. 基于Spark的离线电影推荐
  16. 解决VsCode感叹号快捷键生成html骨架失效
  17. 计算机专业学生的学期规划,大学生大一下学期规划
  18. 3dmax:3dmax中的快捷键集合大全(分门别类,建议收藏)
  19. 一别西湖,又是江南烟雨
  20. POJ1830 开关问题

热门文章

  1. 未来数控机床的发展趋势,你怎么看?
  2. 1523. 在区间范围内统计奇数数目 -力扣
  3. 那些年,我用过的Java线上故障排查工具和方法整理
  4. 推广病毒式营销活动策划书
  5. 电子技术——晶体管尺寸
  6. QT styleSheet image属性不生效问题
  7. 工程项目管理软件有哪些?这六款很好用!
  8. 帝国CMS7.5仿《D9下载站》软件应用下载网站源码
  9. Android 常用API自查表(一)
  10. c盘里面的html文件能删吗,c盘中用户文件里面的东西可以删吗