sum 后可以用MAX吗?

nokings 2010-11-22 08:08:04
elect max sum(sal) from emp group by deptno
...全文
380 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
xman_78tom 2010-11-22
  • 打赏
  • 举报
回复
这样返回的结果集与 Select deptno,sum(sal) SAL from emp group by deptno 查询返回的结果集相同,因为是按 deptno 分类聚合,而每一类 deptno 都只有一个 sum(sal) 值。

直接在 oracle 上执行一下查询语句,可以获得直观的结果,比语言描述要方便理解。

nokings 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xman_78tom 的回复:]
要列出 deptno,用下面的办法
select deptno, sal from
(select deptno,sum(sal) sal
from emp
group by deptno
order by sal desc)
where rownum=1;

已经有点罗嗦了
[/Quote]
列出最大值的deptno?能否这样?
SELECT deptno, max(SAL) sal
FROM
(
Select deptno,sum(sal) SAL from emp group by deptno
)P
GROUP BY deptno
xman_78tom 2010-11-22
  • 打赏
  • 举报
回复
要列出 deptno,用下面的办法
select deptno, sal from
(select deptno,sum(sal) sal
from emp
group by deptno
order by sal desc)
where rownum=1;

已经有点罗嗦了
ChinaITOldMan 2010-11-22
  • 打赏
  • 举报
回复
select max(Freight)
from
(
select EmployeeID,sum(Freight) Freight from dbo.Orders group by EmployeeID
)p


nokings 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cxmcxm 的回复:]
需用2层,先查出sum,再查max

SQL code
select max(sal) from (select sum(sal) sal from emp group by deptno)a
[/Quote]
那么要输出deptno?
nokings 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xman_78tom 的回复:]
这个相当于在 select deptno,sum(sal) sal from emp group by deptno; 查询的结果集上执行聚集操作,deptno 列没有被聚合,不能列出。

如同这样的语句
select max(sum_sal)
from (
select deptno,sum(sal) sum_sal from emp group by deptno
)
可以列出……
[/Quote]
不清楚能不能列出deptno
xman_78tom 2010-11-22
  • 打赏
  • 举报
回复
这个相当于在 select deptno,sum(sal) sal from emp group by deptno; 查询的结果集上执行聚集操作,deptno 列没有被聚合,不能列出。

如同这样的语句
select max(sum_sal)
from (
select deptno,sum(sal) sum_sal from emp group by deptno
)
可以列出 deptno 吗?
nokings 2010-11-22
  • 打赏
  • 举报
回复
select deptno,max(sum(sal)) from emp group by deptno;
为什么不行?
nokings 2010-11-22
  • 打赏
  • 举报
回复

不要 deptno 可以直接
select max(sum(sal)) from emp group by deptno;
这是为什么??

cxmcxm 2010-11-22
  • 打赏
  • 举报
回复
需用2层,先查出sum,再查max
select max(sal) from (select sum(sal) sal from emp group by deptno)a
xman_78tom 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 nokings 的回复:]

在oracle中可不可以这样写 select deptno,max(sum(sal)) from emp group by deptno
// 或者 select deptno,sum(sal) SAL from emp group by deptno having max(SAL)
[/Quote]

不可以。
nokings 2010-11-22
  • 打赏
  • 举报
回复
在oracle中可不可以这样写 select deptno,max(sum(sal)) from emp group by deptno
// 或者 select deptno,sum(sal) SAL from emp group by deptno having max(SAL)
xman_78tom 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 nokings 的回复:]

就是oracle 能不能直接max sum(sal)?
[/Quote]

不要 deptno 可以直接
select max(sum(sal)) from emp group by deptno;
xman_78tom 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nokings 的回复:]

如果说我要输出deptno?
[/Quote]

-- SQL Server
select top(1) deptno,sum(sal) sal
from emp
group by deptno
order by sal desc;

-- Oracle
select * from
(select deptno,sum(sal) sal
from emp
group by deptno
order by sal desc)
where rownum=1;
blackjoe 2010-11-22
  • 打赏
  • 举报
回复
SELECT deptno, max(SAL) sal
FROM
(
Select deptno,sum(sal) SAL from emp group by deptno
)P
nokings 2010-11-22
  • 打赏
  • 举报
回复
就是oracle 能不能直接max sum(sal)?
blackjoe 2010-11-22
  • 打赏
  • 举报
回复
SELECT deptno, max(SAL) sal
FROM
(
Select deptno,sum(sal) SAL from emp group by deptno
)P
GROUP BY deptno
blackjoe 2010-11-22
  • 打赏
  • 举报
回复


select max(Freight)
from
(
select EmployeeID,sum(Freight) Freight from dbo.Orders group by EmployeeID
)p


「已注销」 2010-11-22
  • 打赏
  • 举报
回复
逻辑上貌似有问题,里面Group by后每个deptno都是不一样的,所以外层的max再Group By则记录不会变化。
「已注销」 2010-11-22
  • 打赏
  • 举报
回复
SELECT deptno, max(SAL) sal
FROM
(
Select deptno,sum(sal) SAL from emp group by deptno
)P
GROUP BY deptno
加载更多回复(3)

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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