✏️ 조건에 맞는 사원 정보 조회하기 링크
HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE 테이블에서 2022년도 한해 평가 점수가 가장 높은 사원 정보를 조회하려 합니다. 2022년도 평가 점수가 가장 높은 사원들의 점수, 사번, 성명, 직책, 이메일을 조회하는 SQL문을 작성해주세요.
2022년도의 평가 점수는 상,하반기 점수의 합을 의미하고, 평가 점수를 나타내는 컬럼의 이름은 SCORE로 해주세요.
🤯 풀이
LIMIT을 쓸 때 가장 큰 값을 구할 거면 desc!
👾 구현
-- MySQL
SELECT SUM(g.score) AS score, g.emp_no, e.emp_name, e.position, e.email
FROM hr_grade g
INNER JOIN hr_employees e
ON e.emp_no = g.emp_no
GROUP BY emp_no, year
HAVING year = '2022'
ORDER BY score desc
LIMIT 1;
🤖 Gemini의 개선 제안
SELECT
SUM(g.score) AS score,
g.emp_no,
e.emp_name,
e.position,
e.email
FROM
hr_grade g
INNER JOIN
hr_employees e ON e.emp_no = g.emp_no
WHERE
g.year = 2022
GROUP BY
g.emp_no, e.emp_name, e.position, e.email
ORDER BY
score DESC
LIMIT 1;
- HAVING 대신 WHERE을 먼저 사용해서 HR_GRADE 테이블에서 2022년도 데이터만 선택하도록 필터링합니다
- GROUP BY g.emp_no, e.emp_name, e.position, e.email: SELECT 절에 있는 집계 함수(SUM)가 아닌 모든 컬럼(emp_no, emp_name, position, email)은 GROUP BY 절에 명시적으로 포함되어야 합니다. 그렇지 않으면 데이터베이스 시스템에 따라 오류가 발생하거나 예상치 못한 결과가 나올 수 있습니다
'Algorithm > SQL' 카테고리의 다른 글
[PROGRAMMERS] SQL 고득점 Kit - IS NULL (MySQL, Oracle) (0) | 2025.05.12 |
---|---|
[PROGRAMMERS] SQL 고득점 Kit - SELECT (MySQL, Oracle) (1) | 2024.01.10 |
[SQL/SELECT] Lv.1 조건에 맞는 도서 리스트 출력하기 (MySQL, Oracle) (0) | 2023.08.04 |
[SQL/SELECT] Lv.1 과일로 만든 아이스크림 고르기 (MySQL, Oracle) (0) | 2023.08.01 |