MySQL基础语法--分组查询(GROUPBY,WHERE和
HAVING的使⽤⽅法)
希望按照⾃⼰的⼀些要求,将每⼀个⼩组的信息进⾏统计分析,⽐如公司有很多部门,想统计每个部门完成⾃⼰任务的情况,就可以⽤分组查询,先把部门分组,然后统计各个⼈员完成任务的情况。
语法说明
语法
SELECT 分组函数,列(出现在group by后⾯)
groupby分组FROM 表格
【WHENE 筛选条件0】
GROUP BY 分组的列表
【ORDER BY 字句】
查询列表必须特殊,要求为分组函数和GROUP BY后出现的字段。group by 接后⾯通过所要的内容
案例1,每个部门的最⾼⼯资
SELECT MAX(salary),department_id
FROM AS
GROUP BY apartment_id;
可以理解为,根据每个组,也就是apartment,选出当前组内条件为薪⽔最⾼的⼈的薪⽔数字,返回是薪⽔和部门信息
案例2;每个部门坐位包含21的的⼯位个数,select填写的永远是需要返回的数值,其他的数值可以添加
SELECT COUNT(*) ,location_id
FROM AS
WHERE set_num LIKE '&21&'
GROUP BY location_id;
接下来添加⽐较复杂的筛选条件
1.查询哪些部门的个数⼤于2
思考:查询每个部门的员⼯个数。根据上⾯结果进⾏查询,查询哪些部门的⼈员个数⼤于2。
SELECT count(*),department_id
FROM AS
GROUP BY department_id;
以上就筛选出所有部门员⼯的个数,逐个语句筛选,第⼀个是提取总数,和部门编号,按照部门筛选。
紧接着,从表中计算⼤于2的个数。
SELECT count(*),department_id
FROM AS
GROUP BY department_id
HAVING COUNT(*) >2;
对于这个代码筛选来说,如何判断语句是关键
2.查询每个⼯种的最⾼⼯资>1000,的⼯种编号和最⾼⼯资
SELECT MAX(salary),manager_id
FROM AS
WHERE commission_pct IS NOT NULL GROUP BY manager_id;
汉字筛选版
SELECT 最⼤薪⽔,职位
FROM 表
WHERE 奖⾦⾮空
GROUP BY 职位;
分组查询的条件,分选前查询,分组后查询。就看查询的数据源是原始表还是分组后的表分组函数做条件,肯定是放在having⾥⾯。总结:group by⽀持多个和单个查询
order by 放在最后⾯。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论