求一条查询语句 求一条查询语句 , EMP有3个字段 EMANE,DEPTNO,SAL求查询每个部门薪水前十名的纪录 用一条SQL语句 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SELECT * FROM (SELECT ENAME, DEPTNO, SAL, RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL) RK FROM EMP) WHERE RK <= 10; SELECT * FROM (SELECT ENAME, DEPTNO, SAL, RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) RK FROM EMP) WHERE RK <= 10; 另外一种方法:SELECT * FROM EMP E1 WHERE ( SELECT COUNT(1) FROM EMP E2 WHERE E1.DEPTNO = E2.DEPTNO AND E1.SAL < E2.SAL ) < 10; RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) 麻烦解释一下,谢谢! 1楼正解。RANK 功能描述:1、根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。2、如果两行得到同样的排序,则序数将随后跳跃。如:若两行序数为1,则没有序数2,序列将给组中的下一行分配值3。DENSE_RANK则没有任何跳跃。 winXP安装Oracle 10g 创建数据库错误 ORA-19624 请教个SQL语句 建索引!!!!急急急 关于oracle数据抽取的问题 在线等待 insert into 很慢 windows环境中utl_file路径问题 关于修改表中某个字段数据类型和长度问题。 这个SQL语句怎么写呀? oracle数据库和asp程序不在同一服务器上,怎么写连接代码?急!! 求助,紧急求助 sql语句插入一列的问题 oralce中的Enterprise Manager Console 中的独立启动和登陆启动有什么区别?
FROM (SELECT ENAME,
DEPTNO,
SAL,
RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL) RK
FROM EMP)
WHERE RK <= 10;
FROM (SELECT ENAME,
DEPTNO,
SAL,
RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) RK
FROM EMP)
WHERE RK <= 10;
SELECT *
FROM EMP E1
WHERE (
SELECT COUNT(1)
FROM EMP E2
WHERE E1.DEPTNO = E2.DEPTNO
AND E1.SAL < E2.SAL
) < 10;
功能描述:
1、根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。
2、如果两行得到同样的排序,则序数将随后跳跃。如:若两行序数为1,则没有序数2,序列将给组中的下一行分配值3。DENSE_RANK则没有任何跳跃。