how2j.cn


工具版本兼容问题
分组查询通常和统计函数结合起来使用


步骤 1 : 分组查询   
步骤 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排序下来 怎么写
色痞

如果我想把平均工资按照部门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 分组的时候,查询字段,为什么只能是统计函数,或者被分组的字段
杰尼龟想问问

分组的时候,查询字段,为什么只能是统计函数,或者被分组的字段 select avg(salary),e.first_name,e.department_id from hr.employees e group by e.department_id,e.first_name 那这句是否有错误




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 分组语句提问




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 数据库-oracle-分组查询 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图