SQL语句之分组查询--GROUP BY(group by)
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
注:分组前的筛选用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的工种编号和最高工资
思路:
- 查询每个工资有奖金的员工的最高工资;
- 根据最高工资筛选大于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)相关推荐
- SQL语句:分组查询
在对数据表中数据进行统计时,可能需要按照一定的类别分别进行统计.比如查询每个部门的员工数. 使用GROUP BY按某个字段,或者多个字段中的值,进行分组,字段中值相同的为一组 语法格式 查询列表必须是 ...
- 使用mysql语句进行分组查询
使用mysql语句进行分组查询 1 作用 对整个数据表的某几个字段进行分组,然后通过分组函数得到我们想要的结果 2 如何用 2.1 只分一个组 2.1.1 本质 就是根据分组字段把整个表的数据分为几组 ...
- JavaWeb学习笔记(数据库、SQL语句、数据查询语法、完整性约束、编码、备份和恢复数据、多表查询)
数据库.SQL语句.数据查询语法.完整性约束.编码.备份和恢复数据.多表查询 JavaWeb学习笔记 数据库 数据库概念 基本命令 启动和关闭mysql服务器 客户端登录退出mysql SQL语句 S ...
- 【转】在SQL Server中通过SQL语句实现分页查询
在SQL Server中通过SQL语句实现分页查询 2008年01月06日 星期日 12:28 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY ...
- sql语句提高数据库查询效率
可以通过以下多个方面优化sql语句提高数据库查询效率 1. 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2. 应尽量避免在 where 子 ...
- 在JDBC中实现SQL语句的模糊查询
在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...
- SQL语句多表查询:【多表连查】和【子查询】
SQL语句多表查询:[多表连查]和[子查询] 说明:insert.update.delete只针对[一张表]执行操作. 说明:select可以查询一张表.也可以查询多张表. 说明:多表查询分为:[多表 ...
- mongodb 跟踪SQL语句及慢查询收集
有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行 ./mongostat -port 端口号 ...
- mysql语句统计总数_一条sql语句实现统计查询_MySQL
bitsCN.com 一条sql语句实现统计查询 如图:程序员在进行如下的统计时,现在提供两种实现方案: 方案一:运用 SEKECT CASE WHEN EXPLAIN SELECT count(*) ...
最新文章
- 设计模式-合成复用原则
- 今日 Paper | 协作蒸馏;人脸反欺骗;人脸表示;3D-CariGAN等
- 【运筹学】表上作业法 ( 示例 | 使用 “ 最小元素法 “ 找初始基可行解 )
- Genymotion的使用 -- A Faster Android Emulator
- Redis集群方案,Codis安装测试
- 10 个常用的软件架构模式
- SpringCloud版本名字
- python实时策略_Python策略模式
- 【渝粤教育】电大中专电子商务网站建设与维护 (13)作业 题库
- python用pyecharts画柱状图_小白学Python(13)——pyecharts 绘制 柱状图/条形图 Bar
- SPSS基础教程:认识SPSS的主要窗口
- Linux 程序编译过程详解
- MUI框架学习——了解MUI
- 解决 Win7 远程桌面 已停止工作的问题
- 基于Spark的离线电影推荐
- 解决VsCode感叹号快捷键生成html骨架失效
- 计算机专业学生的学期规划,大学生大一下学期规划
- 3dmax:3dmax中的快捷键集合大全(分门别类,建议收藏)
- 一别西湖,又是江南烟雨
- POJ1830 开关问题