请问如何消除这个笛卡尔积?

mdma 2010-03-15 11:16:45
问题:列出在每个部门工作的员工数量,平均工资和平均服务期限和部门名称

select e.deptno,count(e.empno), avg(e.sal) 平均工资,avg(sysdate-e.hiredate)/365/count(e.empno) 平均年份,d.dname
from emp e,dept d
group by e.deptno,d.dname;
...全文
783 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mdma 2010-03-15
  • 打赏
  • 举报
回复
谢谢了.我刚才用了where,发现不行.
原来是group by 那里少了个d.dname,
还以为不能用where呢.谢谢各位了
csuxp2008 2010-03-15
  • 打赏
  • 举报
回复
在group by前面增加where子句,例如:

where e.depno=d.depno

Future_Hui_ 2010-03-15
  • 打赏
  • 举报
回复
select e.deptno,count(e.empno), avg(e.sal) 平均工资,avg(sysdate-e.hiredate)/365/count(e.empno) 平均年份,d.dname
from scott.emp e,scott.dept d
WHERE e.deptno=d.deptno
group by e.deptno,d.dname;
Phoenix_99 2010-03-15
  • 打赏
  • 举报
回复
从语句上来说,应该是条件不足吧,你这样查询的话,结果肯定会多
select e.deptno,count(e.empno), avg(e.sal) 平均工资,avg(sysdate-e.hiredate)/365/count(e.empno) 平均年份,d.dname
from emp e,dept d where ...
group by e.deptno,d.dname;
shiyiwan 2010-03-15
  • 打赏
  • 举报
回复
from emp e,dept d
where e.deptid = d.deptid
group by ...

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧