【Mysql 学习笔记】Mysql 分组关键字

分组关键字

GROUP BY值1(字段),值2(字段)… 进行分组,分组顺序从左到右

  • 直接上例子!

  • emp {	// 员工表				
    	id,	   '员工id'
    	name,  '员工姓名'
    	salary,'工资'
    	jobId, '工种编号'
    	depId, '部门编号'
    	...
    }
    dep {//部门表
    	id,  '员工id'
    	name,'员工姓名'
    	...
    }
    1.
    '查询各部门的员工平均的工资'
    select 
    	depId '部门编号', AVG(salary) '该部门的平均工资'
    	from emp group by depId
    	
    ------------------------------------------
    
    2.	
    '查询各部门的员工平均的工资(从高到低 降序)'
    select 
    	depId '部门编号', AVG(salary) '该部门的平均工资'
    	from emp group by depId 
    		order by  '该部门的平均工资' DESC; 'order by 排序,DESC 代表降序' 
    		
    ------------------------------------------
    
    3.1
    '查询各部门的各工种的平均工资(从高到低 降序)'
    select 
    	dept_id '部门编号', job_id '工种编号',AVG(salary) '该部门的平均工资'
    	from emp group by dept_id, job_id
    
    3.2		
    select 
    	dept_id '部门编号', job_id '工种编号',AVG(salary) '该部门的平均工资'
    	from emp group by  job_id, dept_id
    	
    问: 3.23.3 交换了分组顺序,结果是一样的吗?
    	'其实是一样的,3.1 根据先分组部门再分组工种
    			     3.2 根据先分组工种再分组部门'
    			     
    ------------------------------------------
    4.
    select 
    	dept_id '部门编号', job_id '工种编号',AVG(salary) '该部门的平均工资'
    	from emp group by dept_id;
    
    '这个语句是错误的 因为分组后的部门编号 只显示一个工种, 无论从逻辑上还是实际显示上 这种都是错误的!!!!!!!!'
    
    '结论:select中出现非聚合函数的字段 必须在group by 中声明!
    	但是 group by的字段并不一定要出现在select语句中!'
    	
    ------------------------------------------
    
    'group by 出现顺序: 在from后面 where后面, order by 前面 limit前面'
    例子:
    5.
    '查询各部门的各工种的工资>6k的人数(从高到低 降序)的前3个部门'
    
    	select 
    	dept_id '部门编号', job_id '工种编号',COUNT(1) '工资大于6k人数'
    	from emp 
    		where(salary > 6000)
    			group by dept_id
    			order by '工资大于6k人数' DESC
    			 limit 0,3; 
    
    
    • 结论:select中出现非聚合函数的字段 必须在group by 中声明!但是 group by的字段并不一定要出现在select语句中!

    • group by 出现顺序: form … where … group by … order by … limit …

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值