2013-01-15 38 views
1

我已經在oracle數據庫中寫了這個查詢。以下查詢有什麼問題?

Select salary from emp having salary < (SELECT MAX(SALARY) FROM EMP)); 

http://sqlfiddle.com/#!4/47961/13

但它無法正常工作。

我在哪裏錯了?

+0

));應該 );我相信。 – Oren

+0

'having'與'GROUP BY'組合使用來縮小結果 – Tikkes

+0

您可以應用您使用group by的子句,這裏沒有任何group by只用在哪裏 –

回答

1
Select salary from emp where salary < (SELECT MAX(SALARY) FROM EMP)); 

可以適用,如果你通過使用組having條款,這裏也沒有組比只使用where

The HAVING Clause

HAVING子句已添加到SQL,因爲WHERE關鍵字不能用於聚合函數。在甲骨文

+0

+1:實際解釋爲什麼 – Tikkes

+0

@Downvoter - 在低估答案之前敢於給出理由 –

3

的事情要做,

  • 使用WHERE
  • 刪除多餘的括號(與聚合條件比較時有使用),

如。

Select salary 
FROM emp 
WHERE salary < (SELECT MAX(SALARY) FROM EMP); 
3

兩個錯誤:

  • 使用WHERE,而不是HAVING
  • 刪除多餘的括號。

試試這個:

SELECT salary 
FROM emp 
WHERE salary < (SELECT MAX(salary) FROM emp); 

http://sqlfiddle.com/#!4/47961/17

0
Select salary from emp WHERE SALARY < (SELECT MAX(SALARY) FROM EMP); 
0

正確的方式使用具有:

SELECT sal FROM scott.emp 
GROUP BY sal 
HAVING sal < (SELECT MAX(SAL) FROM scott.EMP) 

/
SELECT deptno, COUNT(*) total_emps_by_dept 
    FROM scott.emp 
GROUP BY deptno 
HAVING COUNT(*) > 1 
/