私はこのスキーマを与えられています:
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 d.did AS Department, AVG(e.age) AS Average_Age
FROM Emp e, Works w, Dept d
WHERE e.eid=w.eid AND w.did=d.did
GROUP BY d.did
ただし、次のようなことをしようとすると:
SELECT Department, MIN(Average_Age)
FROM
(
SELECT d.did AS Department, AVG(e.age) AS Average_Age
WHERE e.eid=w.eid AND w.did=d.did
GROUP BY d.did
) MyTable
間違った部門 ID を返します。その列には 0 を返すだけですが、前のテーブルの最小年齢を返します。ただし、年齢が最も低い部門 ID は 4 です。何が間違っていますか?