我想列出所有年齡大於具有相同國籍的人的平均年齡的人。涉及三個表格:人員,護照和國家。這是我到目前爲止有:oracle sql:比具有相同國籍的人的平均年齡早的人
select round(months_between(sysdate, dob)/12) as age, country.name, person.name, person.surname
from person
join passport on person.pid= passport.pid
join country on passport.cid= country.cid
where round(months_between(sysdate, dob)/12) >
(select avg(round(months_between(sysdate, dob)/12))
from person join passport on person.pid= passport.pid
join country on passport.cid= country.cid);
出於某種原因,我得到它小於人的平均年齡不想要的結果。對於同一國籍的人的平均年齡的select語句是:
SELECT avg(round(months_between(sysdate, dateofbirth)/12)) as age, country.name
from person
join passport on person.personid = passport.personid
join country on passport.countryid = country.countryid
group by country.name;
我用這個沒有GROUP BY子句我再選擇在上述範圍內。這可以正常工作,但只有年齡大於平均年齡的人才能正確地查詢結果。
提示;子查詢中有太多連接。它應該與外部查詢相關聯。 –
我從_subselect_中刪除了所有連接,但仍然在輸出中顯示不需要的結果。 @GordonLinoff –