我正在嘗試獲得收入低于其經理的女員工的姓名。下設三個部門,每個部門都有經理。括號中的子查詢正確回傳該經理的工資。我也試圖在沒有經理的情況下接待所有工人,但我的代碼總是錯誤的。你知道我應該糾正什么嗎?
SELECT sal
FROM SCOTT.emp
WHERE NOT EXISTS (SELECT sal
FROM SCOTT.emp
WHERE job LIKE 'MANAGER');
這是我的表:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 80/12/17 800 20
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7566 JONES MANAGER 7839 81/04/02 2975 20
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7839 KING PRESIDENT 81/11/17 5000 10
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7900 JAMES CLERK 7698 81/12/03 950 30
7902 FORD ANALYST 7566 81/12/03 3000 20
7934 MILLER CLERK 7782 82/01/23 1300 10
uj5u.com熱心網友回復:
您可以使用分層查詢:
SELECT ename,
PRIOR ename AS mgr_ename,
sal,
PRIOR sal AS mgr_sal
FROM emp
WHERE (LEVEL = 2 AND sal < PRIOR sal) -- salary is less than manager's salary
OR (LEVEL = 1 AND mgr IS NULL) -- has no manager
CONNECT BY PRIOR empno = mgr
哪些輸出:
易名 MGR_ENAME 薩爾瓦多 MGR_SAL 亞當斯 斯科特 1100 3000 史密斯 福特 800 3000 磨坊主 克拉克 1300 2450 艾倫 布萊克 1600 2850 詹姆士 布萊克 950 2850 車工 布萊克 1500 2850 馬丁 布萊克 1250 2850 病房 布萊克 1250 2850 王 5000 瓊斯 王 2975 5000 克拉克 王 2450 5000 布萊克 王 2850 5000
db<>在這里擺弄
uj5u.com熱心網友回復:
看起來像自我加入我。
SQL> select e.ename employee, e.sal sal_employee,
2 m.ename manager , m.sal sal_manager
3 from emp e join emp m on e.mgr = m.empno
4 where e.sal < m.sal;
EMPLOYEE SAL_EMPLOYEE MANAGER SAL_MANAGER
---------- ------------ ---------- -----------
JAMES 950 BLAKE 2850
TURNER 1500 BLAKE 2850
MARTIN 1250 BLAKE 2850
WARD 1250 BLAKE 2850
ALLEN 1600 BLAKE 2850
MILLER 1300 CLARK 2450
ADAMS 1100 SCOTT 3000
CLARK 2450 KING 5000
BLAKE 2850 KING 5000
JONES 2975 KING 5000
SMITH 800 FORD 3000
11 rows selected.
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/346904.html
上一篇:使用exec()在Java中呼叫linux命令時遇到困難
下一篇:按年和月提取布林值計數
