找出比平均值大的数,只能用一个select,不能嵌套

[复制链接]
查看11 | 回复9 | 2015-3-6 11:58:18 | 显示全部楼层 |阅读模式
create table a(
num number(10)
)
---------
id
2
3
4
5
6
7
8
12
334
67
8
目前想得
SELECT CASE WHEN num-AVG(num) over ()>0 THEN num ELSE NULL END FROM a;
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
select num from a
where num > (select avg(num) from a);
这个也是错的
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
顶一个
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
select num from a
where num > (select avg(num) from a);
这个也是错的
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
select num from a
where num > (select avg(num) from a);
这个也是错的
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
oracle中decode也可以实现吧!
select decode(id>avg(id),id,null) from a;
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
你的意思和1楼的是等价的啊。你的sql会报错的,
能把不需要的行去掉就是对的了
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
依然感谢回答,还有别的回答吗?
或者证明不能写出来也行啊
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
呵呵!我也加个over(),现在应该可以了吧!

select decode(id>avg(id) over(),id,null) from a;
回复

使用道具 举报

千问 | 2015-3-6 11:58:18 | 显示全部楼层
原帖由 sunfly1983 于 2008-10-31 21:25 发表
呵呵!我也加个over(),现在应该可以了吧!

select decode(id>avg(id) over(),id,null) from a;

你耍咋,这个sql还需要把不需要的行去除才对的。想好怎么写了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行