2017-06-18 36 views
0

行順に、右括弧がないことを示すエラーが表示されますが、理由はわかりません。SQL注文文の右括弧がありません

SELECT LAST_NAME AS "Last Name", DEPARTMENT_ID AS "Department Id", SALARY AS 
Salary 
FROM EMPLOYEES JOIN DEPARTMENTS 
USING(DEPARTMENT_ID) 
WHERE SALARY IN (SELECT MIN(SALARY) 
      FROM EMPLOYEES 
      GROUP BY DEPARTMENT_ID, SALARY 
      ORDER BY DEPARTMENT_ID); 

答えて

3

order byin条件の右側に使用されるサブクエリで許可されていません。オラクルは、order byの前に閉じ括弧を予想していました。

in条件で使用されるサブクエリの結果を並べ替えることは意味がありません。

それ以外にも、おそらくgroup by dept_id(なぜsalaryで、それは意味をなさないのでしょうか)だけです。

+0

ありがとうございます。私はあなたが "in"状態で注文を使うことができなかったことを知らなかった – ortz3

+0

@ ortz3 - 何がポイントになるでしょうか? – mathguy

2

order by句 はmathguyが示されているように、order by句がスローされ、エラーが発生し、それが任意の目的を果たすないサブクエリ

に許可されていません。

クエリを確認した後、相関サブクエリ(内部(サブ)クエリで外部クエリの値を使用する)を実行すると思われます。

以下は、サンプルスキーマempとdept(テーブルとよく似ています)を使用しています。具体的には、条件がe1.deptno = e.deptnoであるため、指定部門の給与の中で最も小さい給与を選択します。

具体的には、特定の部門に関連付けられている最低給与に関係していると考えられます。

[email protected]>SELECT 
    2  e.ename, 
    3  e.sal, 
    4  d.* 
    5 FROM 
    6  emp e 
    7  JOIN dept d ON e.deptno = d.deptno 
    8 WHERE 
    9   1 = 1 
10  AND 
11   e.sal IN (
12    SELECT 
13     MIN(e1.sal) 
14    FROM 
15     emp e1 
16    WHERE 
17     e1.deptno = e.deptno 
18   ) 
19 ORDER BY d.deptno; 

ENAME SAL DEPTNO DNAME  LOC  
MILLER 1300 10  ACCOUNTING NEW YORK 
SMITH 800 20  RESEARCH DALLAS  
JAMES 950 30  SALES  CHICAGO 
関連する問題