2017-12-14 1 views
0

이것은 오라클의 스크립트이지만 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' 근처를 사용하는 MySQL 서버 버전에 해당하는 설명서를 확인 7

+1

'GROUP BY'이 HAVING''전에 가야합니다 (적어도 MS SQL에서, MySQL은 아마 동일). 난 그냥 PL SQL docs 보았다 및 거기에 동일한 구문을 것으로 나타납니다. –

+0

일반적으로 HAVING 절 앞에는 [순서는 거의 모든 것] (https://www.w3schools.com/sql/sql_having.asp)이 있습니다. :) –

+0

@PaulHodges group by –

답변

0

작은 하위 쿼리에 쿼리를 오토넷보십시오. 귀하의 경우에는

나는 시도 할 것이다 :

SELECT * 
FROM (
    SELECT SUM(staff_salary) sm , branch_no 
    FROM staff 
    GROUP BY BRANCH_NO 
) s 
ORDER BY sm DESC LIMIT 1 
관련 문제