-3
これはどのように句が動作するのですか?このクエリの仕組みを理解できますか?
SELECT ENAME,SAL
FROM EMP E
WHERE 3 > (
SELECT COUNT(*)
FROM EMP
WHERE SAL > E.SAL
);
これはどのように句が動作するのですか?このクエリの仕組みを理解できますか?
SELECT ENAME,SAL
FROM EMP E
WHERE 3 > (
SELECT COUNT(*)
FROM EMP
WHERE SAL > E.SAL
);
このクエリは、厳密には、給与が高い他の従業員が3人未満のすべての従業員を返します。あなたは従業員と給与の次のセットを持っていた場合
はたとえば、:ジャックは、彼はよりも高い給料を持っている3人の従業員を持っているので
はFred $100
Bill $80
John $60
Jack $50
次に、あなたのクエリは、ジャックのため除いて皆を返します他の人は2人以下です。
注:クエリは厳密にではありません。は、重複給与を考慮しないため、最高給与の3人の従業員を返します。あなたは、Oracleのサンプル表を使用していない限り
がSELECT ENAME,SAL
FROM EMP E
WHERE (
SELECT COUNT(DISTINCT SAL)
FROM EMP
WHERE SAL > E.SAL
) < 3
あなたは本当に、サンプルデータを追加する必要があり、さらにその場合:クエリでもネクタイの存在下で、トップ3で従業員を検索したい場合は、これを試すことができますそれを少し狭めたいかもしれません。 –
おそらく、その答えを得るための最も効率的なクエリではありません。 – jarlh