このスキーマが与えられた場合:
Emp(eid: integer,ename: string,age: integer,salary: real)
Works(eid:integer,did: integer,pct_time: integer)
Dept(did:integer,budget: real,managerid:integer)
私はこれを思いついた:
SELECT w.did, MIN(e.age) AS Youngest
FROM Works w INNER JOIN Emp e USING (eid)
GROUP BY w.did
各部門の最年少年齢を一覧表示します。しかし、その年齢の人の名前を取得する方法がわかりません。間違った名前が返されるため、このクエリのSELECTリストにenameを追加することはできません。
私はこのようなことを試しましたが、うまくいきません。
SELECT e2.ename, e2.age, w2.did
FROM Emp e2 INNER JOIN Works w2 USING (eid),
(
SELECT w.did, MIN(e.age) AS Youngest
FROM Works w INNER JOIN Emp e USING (eid)
GROUP BY w.did
) MyTable
WHERE e2.eid = eid AND e2.age = Youngest
同じ部門の複数の人が一覧表示されます。