LeetCode:Database 17.従業員ボーナス
要件:bonus<1000のすべての従業員のnameとbonusを選択します.
Employeeテーブル:
Bonusテーブル:
Result Table:
分析:1.クエリの結果は2つのテーブルの内容であり、Employeeテーブルのすべての従業員が表示されるため、左外部接続が必要である.bonus<1000(null以外の値のみフィルタリング可能)またはbonus is nullによる最終データのフィルタリング
SQL文:
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;