2017-12-14 11 views
0

これはOracleのスクリプトですが、MySQLで実行する際に問題があります。MYSQLでこのスクリプトを実行するにはどうすればよいですか?

SELECT s.branch_no, SUM(s.staff_salary) 
from staff AS s 

HAVING SUM(staff_salary) = (SELECT MAX(SUM(S2.staff_salary)) 
          FROM staff AS S2 
          GROUP BY S2.BRANCH_NO) 
          GROUP BY s.branch_no; 

私は、MySQL上でそれを実行したときに、私は取得エラー:

SELECT s.branch_no, SUM(s.staff_salary) 
from staff AS s 

HAVING SUM(staff_salary) = (SELECT MAX(SUM(S2.staff_salary)) 
          FROM staff AS S2 
          GROUP BY S2.branch_no) 
          GROUP BY s.branch_no 
LIMIT 0, 50 

MySQLは言った:

# 1064 - あなたはあなたのSQL構文でエラーが発生しています。右の構文はラインで「s.branch_no LIMIT 0、50、GROUP BY」 近くを使用するためにあなたのMySQLサーバのバージョンに対応するマニュアルを確認してください7

+1

'GROUP BY'は(少なくともMS SQLで、MySQLではおそらく同じ)' HAVING'前に来る必要があります。私はちょうどPL SQLのドキュメントを見て、それはそこに同じ構文が表示されます。 –

+0

通常、HAVING句の前には、[ほとんどすべてを注文する](https://www.w3schools.com/sql/sql_having.asp)があります。 :) –

+0

@PaulHodgesグループby –

答えて

0

小さなサブクエリにクエリをseperating試してみてください。

私がしようとするだろうあなたの場合:

SELECT * 
FROM (
    SELECT SUM(staff_salary) sm , branch_no 
    FROM staff 
    GROUP BY BRANCH_NO 
) s 
ORDER BY sm DESC LIMIT 1 
関連する問題