`
devon.k
  • 浏览: 90569 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SQL(收藏)查询每个部门工资前三名的员工信息

阅读更多
问:Oracle的EMP表,查询每个部门工资前三名的员工信息,如何写??
解答:(通用sql)
select deptno, ename, sal    
from emp e1   
where    
   (
    select count(1)   
    from emp e2   
    where e2.deptno=e1.deptno and e2.sal>=e1.sal
   ) <=3 /*这里的数值表示你想取前几名*/
order by deptno, sal desc;  



Oracle查询:(利用分区功能)
select * from    
(select deptno,ename,sal,row_number() over (partition by deptno   
    order by sal desc) rn    
from emp)    
   where rn<3;  

分享到:
评论
2 楼 st291223883 2014-06-17  
   目测,你的第一sql  是错误的!!!
你有没有想过,并列时候的情况,比如说:某一个部门的员工前三名的工资是相同的话,你的sql 肯定查不出来!!
1 楼 activiti 2013-11-08  
[/img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/img]" target="_blank">[url][url][url][/img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/url][/url][/url]" />[/img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/img]" target="_blank">[url][url][url][/img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/img][/url][/url][/url]" wmode="" quality="high" menu="false" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="200" height="200">[/flash][/flash][/flash][/flash][/flash][/flash]
||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||
||||||||||||||||||||||||||||
||||||||||||||||||||||||||||
|||||||||||||||||||||||||||
|||||||||||||||||||||||||||
||||||||||||||||||||||||||
||||||||||||||||||||||||||
|||||||||||||||||||||||||
|||||||||||||||||||||||||
||||||||||||||||||||||||
||||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
||||||||||||||||||||||
||||||||||||||||||||||
|||||||||||||||||||||
|||||||||||||||||||||
||||||||||||||||||||
||||||||||||||||||||
|||||||||||||||||||
|||||||||||||||||||
||||||||||||||||||
||||||||||||||||||
|||||||||||||||||
|||||||||||||||||
||||||||||||||||
||||||||||||||||
|||||||||||||||
|||||||||||||||
||||||||||||||
||||||||||||||
|||||||||||||
|||||||||||||
||||||||||||
||||||||||||
|||||||||||
|||||||||||
||||||||||
||||||||||
|||||||||
|||||||||
||||||||
||||||||
|||||||
|||||||
||||||
||||||
|||||
|||||
||||
||||
|||
|||
||
||
|
|

相关推荐

    ORACLE SQL :经典查询练手系列文章汇总.pdf

    例如,获取每个部门薪资排名前三的员工:`SELECT *, RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) AS rnk FROM scott.emp;`。 ### 三、数据完整性与优化 1. **索引优化**:创建索引可以提高查询速度,尤其...

    sql练习题 无答案

    2. 列出薪金比“TURNER”多的前三名员工。(员工姓名,薪金) 这个查询需要使用ORDER BY对薪金进行降序排序,然后使用LIMIT或TOP限制结果为前三名。还要确保薪金比TURNER高的条件。 3. 列出所有员工的姓名及其直属...

    Oracle SQL 测试题目

    由于 `ROWNUM` 在 Oracle SQL 中是在查询执行时分配的,因此在子查询中先对 `sal` 排序,再在外部查询中限制返回的行数,以获取最高工资的前三名员工。正确SQL如下: ```sql SELECT * FROM ( SELECT * FROM ...

    Sql面试题大全

    - 内层子查询首先找到每个部门工资高于平均工资的员工。 - 外层查询计算这些员工的数量,并按部门号分组和排序。 **解决方案二:** ```sql SELECT a.ename, a.salary, a.deptid FROM emp a JOIN ( SELECT deptid,...

    Oracle MySQL SQL编程最佳练手指南

    8. 窗口函数:在某些查询中(如找出每个部门工资前三名的员工),会使用窗口函数(如ROW_NUMBER())来实现复杂的排序和排名功能。 9. SQL函数的使用:如使用TO_CHAR函数进行格式化输出,这里可以指定货币单位,是...

    Sql常见面试题(总结)

    -- 示例1:查询最高薪水的前三名员工 SELECT ROWNUM, LAST_NAME, SALARY FROM ( SELECT LAST_NAME, SALARY FROM S_EMP ORDER BY SALARY DESC ) WHERE ROWNUM ; -- 示例2:错误的用法,先过滤 ROWNUM 后排序 ...

    SQL常见面试题.txt

    - 最后,主查询通过 `WHERE t.top3 来筛选出每个部门工资最高的前三名员工。 2. **使用 ROW_NUMBER() 函数** - **问题背景**:除了 `DENSE_RANK()` 函数,还可以使用 `ROW_NUMBER()` 函数来实现类似的需求。 ...

    LeetCode:MySQL分组内取前几名问题(难度:困难)

    编写一个 SQL 查询,找出每个部门获得前三高工资的所有员工。例如,根据上述给定的表,查询结果应返回: 解释:IT 部门中,Max 获得了最高的工资,Randy 和 Joe 都拿到了第二高的工资,Will 的工资排第三。销售部门...

    数据库面试题索引sql优化

    **题目8.9:** 查询EMP员工表下每个部门工资前二名的员工信息。 **解答:** ```sql SELECT DEPTNO, ENAME, SAL FROM EMP E1 WHERE ( SELECT COUNT(1) FROM EMP E2 WHERE E2.DEPTNO = E1.DEPTNO AND E2.ENAME != E1...

    数据库60道题目

    查询薪资最高的前三名员工信息 **SQL语句:** ```sql select top 3 * from employee order by salary desc; ``` **知识点:** - **表名与字段选择:** `employee` 表包含了员工信息。 - **排序:** 使用 `order ...

    基于mysql的sql语句学习与练习

    例如,计算每个部门的平均薪水: ```sql SELECT DepartmentID, AVG(Salary) AS AverageSalary FROM Employee GROUP BY DepartmentID; ``` 五、排序与分页 ORDER BY用于排序结果,LIMIT用于分页。要按薪水降序...

    SQL语句(增、删、改、查)及相关问题

    -- 查询前10名员工的姓名 ``` 在Oracle中没有TOP关键字,可以使用ROWNUM: ```sql SELECT * FROM Employees WHERE ROWNUM ; ``` ##### 6. 排序 ```sql SELECT 列名 FROM 表名 WHERE 条件表达式 ORDER BY 列名 [ASC...

    oracle常用sql查询语句部分集合(图文)

    1.–dense_rank()分析函数(查找每个部门工资最高前三名员工信息) select * from (select deptno,ename,sal,dense_rank() over(partition by deptno order by sal desc) a from scott.emp) where a&lt;=3 order by ...

    oracle基础试题

    用一条SQL语句查询出scott.emp表中每个部门工资前三位的数据。** - **知识点**: 分区函数、窗口函数 - **解答**: 使用`ROW_NUMBER()`窗口函数来实现。 ```sql SELECT * FROM ( SELECT e.*, ROW_NUMBER() OVER...

    SQL真题详解

    **题目4:查询员工工资最高的前三名** - **解答**: ```sql SELECT * FROM employees ORDER BY salary DESC LIMIT 3; ``` **题目5:连接学生表和成绩表,显示学生的姓名及其成绩** - **解答**: ```sql ...

    实验三单表查询.docx

    查询三:查询住址中含有“上海”或“南昌”的女员工,并显示其姓名、所属部门、职务、住址、出生日期和性别 在这个查询中,我们需要使用 OR 运算符来连接两个条件,即住址中含有“上海”或“南昌”。该查询可以使用...

    oracle面试测试题.docx

    - O:显示每个部门中最高工资的员工信息 3. 员工培训系统案例: - Employee表:EID,Name,Department,Job,Email,password - Training表:CourseId,EID,orders,CourseGrade - - 表结构设计,设置EID为...

    浅谈asp.net中的ExecuteNonQuery(),ExecuteReader()和ExecuteScalar().

    然后,通过`Read()`方法逐行读取结果集,并打印出每个员工的名字和薪水。 ### ExecuteScalar() `ExecuteScalar()`方法用于执行查询并返回单个值,这通常是在执行一个聚合函数(如COUNT, SUM, AVG等)或返回单一值...

Global site tag (gtag.js) - Google Analytics