oracle sql中的group by表达式的内部连接[重复]
Posted
技术标签:
【中文标题】oracle sql中的group by表达式的内部连接[重复]【英文标题】:inner join with group by expression in oracle sql [duplicate] 【发布时间】:2013-03-30 00:24:56 【问题描述】:我是 sql 新手,感谢任何帮助。
我有两张桌子,employees
和 jobs
。 employees
包含一个变量 job_id
(多个员工可以有相同的 job_ID)。 jobs
包含变量job_id
和job_title
(一个job_ID 对应一个job_title,如果你有兴趣,这是oracle 中的hr schema)。
我希望查询返回:job_title、job_ID 和拥有相同 job_Id 的人数。
我尝试了以下代码:
select j.job_title, e.job_ID, count(e.job_ID)
from employees e, jobs j
where e.job_id=j.job_id
group by e.job_Id
错误信息是:
ORA-00979: 不是 GROUP BY 表达式 00979. 00000 - “不是 GROUP BY 表达式” *原因: *行动: 行错误:83 列:8
你能帮我解决这个问题吗?
【问题讨论】:
【参考方案1】:错误信息有点误导。当您select
一堆字段和一个聚合时,您必须group by
您select
的每个字段,并且只有您select
的字段。所以你的查询必须是:
select j.job_title, e.job_ID, count(e.job_ID)
from employees e, jobs j
where e.job_id=j.job_id
group by e.job_Id, j.job_title
【讨论】:
以上是关于oracle sql中的group by表达式的内部连接[重复]的主要内容,如果未能解决你的问题,请参考以下文章
同样的sql在mysql运行没有问题,在oracle会报不是group by表达式的错
Oracle Group by NULL 中的 SQL 返回多行