したがって、タスク8は次のように述べています。一部の国では、(同じ大陸にある)近隣諸国の3倍以上の人口があります。国と大陸を与えます。
少し不明瞭だと思います。隣人は誰ですか?これは大陸のすべての国ですか?はいの場合、次の質問は、最小のネイバーまたは最大のネイバーと比較するかどうかです。それが最大の隣人だとしましょう。その場合、クエリは次のようになります
select name, continent
from world w1
where w1.population > (select max(3*w2.population)
from world w2
where w2.continent = w1.continent
and w2.name <> w1.name)
そうでなければ、それが一緒にすべての隣人の3倍になるとしたら、それはこれになります
select name, continent
from world w1
where w1.population > (select 3*sum(w2.population)
from world w2
where w2.continent = w1.continent
and w2.name <> w1.name)
それが役に立てば幸い。
編集:Oracle SQLマニュアル(E26088-01)には、すべての関数について記載されています。
値をリスト内のすべての値と比較するか、クエリによって返されます。
例:
SELECT * FROM employees
WHERE salary >=
ALL ( 1400, 3000)
ORDER BY employee_id;
最初に集計してから比較することで、1つの比較に減らします。与えられたサンプルテーブルの結果は同じです。しかし、すべての国に対するクエリは、実際には異なる結果をもたらす可能性があります。結局のところ、私はあなたの質問がより良いと言わなければなりません。人口が1mio、3.5 mio、11 mioの大陸にいる場合、実際には2番目の国は最初の国の3倍であり、3番目の国は2番目の国の3倍です。私のクエリは2番目の国と3番目の国のみを比較しますが、クエリは1番目の国と2番目の国も比較します。