步骤 2 : 易犯错误
按照部门进行分组,查看每个部门的平均薪资是多少
如果没有分组查询,就需要进行多次查询,再手动汇总 select avg(salary) from hr.employees e where e.department_id = 90 select avg(salary) from hr.employees e where e.department_id = 100 select avg(salary) from hr.employees e where e.department_id = 110 ... 如果使用分组函数,一条语句就够了 select avg(salary),e.department_id from hr.employees e group by e.department_id
分组的时候,查询字段,只能是统计函数,或者被分组的字段
比如 select avg(salary),e.department_id from hr.employees e group by e.department_id 查询字段就只能是统计函数,或者department_id,但是不能是first_name 比如 select avg(salary),e.first_name from hr.employees e group by e.department_id 这个就会报错 因为从逻辑上来讲,按照department_id来分组员工,分在一起的员工,他们的department_id都是一样的,但是他们的first_name是不一样的,所以不能够查询first_name字段
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2022-07-12
如果我想把平均工资按照部门id排序下来 怎么写
1 个答案
id:301909 跳转到问题位置 答案时间:2023-03-23 select avg(salary),e.department_id from hr.employees e group by e.department_id order by e.department_id
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2018-12-02
分组的时候,查询字段,为什么只能是统计函数,或者被分组的字段
2 个答案
早点睡别熬夜 跳转到问题位置 答案时间:2021-09-01 没有错,即分组两次,先按department_id分组,再按first_name分组
栀言 跳转到问题位置 答案时间:2019-02-27 个人理解:这句是对的,分组的意思是department_id相同的为一组,但是员工的部门号相同,姓名却不一定相同,所以不能查询姓名;
按照你的sql语句,用first_name分组,first_name相同的为一组,由于这儿一个分组只有一个姓名所以可以查询;
比如是按照manager_id分组,那么manager_id相同的一组中可能有不同的first_name和不同的department_id,所以大多数时候只能查询被分组字段。
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2018-03-13
分组语句提问
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|