LeetCode:Database 17.従業員ボーナス

1074 ワード

要件:bonus<1000のすべての従業員のnameとbonusを選択します.
Employeeテーブル:
+-------+--------+-----------+--------+
| empId |  name  | supervisor| salary |
+-------+--------+-----------+--------+
|   1   | John   |  3        | 1000   |
|   2   | Dan    |  3        | 2000   |
|   3   | Brad   |  null     | 4000   |
|   4   | Thomas |  3        | 4000   |
+-------+--------+-----------+--------+
empId           

Bonusテーブル:
+-------+-------+
| empId | bonus |
+-------+-------+
| 2     | 500   |
| 4     | 2000  |
+-------+-------+
empId           

Result Table:
+-------+-------+
| name  | bonus |
+-------+-------+
| John  | null  |
| Dan   | 500   |
| Brad  | null  |
+-------+-------+

分析:1.クエリの結果は2つのテーブルの内容であり、Employeeテーブルのすべての従業員が表示されるため、左外部接続が必要である.bonus<1000(null以外の値のみフィルタリング可能)またはbonus is nullによる最終データのフィルタリング
SQL文:
SELECT NAME,bonus
FROM(
SELECT a.name,b.bonus
FROM Employee a
LEFT JOIN bonus b 
ON a.empid=b.empid)
c 
WHERE bonus<1000 OR bonus IS NULL;