我想从一个表中的每个部门找到两个最高工资,这个部门有部门号,工资和其他各种栏目.我得到了这个答案; 它肯定有效,但我无法理解逻辑.
select *
from emp a where 2 > (select count( distinct(sal))
from emp
where sal > a.sal and a.deptno=deptno)
order by deptno;
Run Code Online (Sandbox Code Playgroud) b_id | s_id | doi | dos | charge |
+------+------+------------+------------+--------+
| 10 | 3 | 0000-00-00 | 0000-00-00 | 200 |
| 10 | 2 | 0000-00-00 | 0000-00-00 | 200 |
| 20 | 1 | 0000-00-00 | 0000-00-00 | 200 |
| 30 | 2 | 0000-00-00 | 0000-00-00 | 200 |
| 40 | 4 | 0000-00-00 | 0000-00-00 | 200 |
| 40 | 5 | 0000-00-00 | 0000-00-00 | 200 |
| 70 | …Run Code Online (Sandbox Code Playgroud)