SQL 고득점 Kit - 8.29

김동현·2024년 9월 2일

SQL 고득점 Kit

목록 보기
42/56

SELECT - 특정 물고기를 잡은 총 수 구하기

문제

FISH_INFO 테이블에서 잡은 BASS와 SNAPPER의 수를 출력하는 SQL 문을 작성해주세요.

컬럼명은 'FISH_COUNT`로 해주세요.

https://school.programmers.co.kr/learn/courses/30/lessons/298518

풀이

WITH fish AS(
    SELECT *
    FROM FISH_NAME_INFO
    WHERE FISH_NAME IN ('BASS', 'SNAPPER')
)
    
SELECT COUNT(*) FISH_COUNT
FROM fish f
INNER JOIN FISH_INFO fi
ON f.FISH_TYPE = fi.FISH_TYPE

-- 좀 더 편리하게?
SELECT COUNT(*) FISH_COUNT
FROM FISH_NAME_INFO f
INNER JOIN FISH_INFO fi
ON f.FISH_TYPE = fi.FISH_TYPE
WHERE f.FISH_NAME IN ('BASS', 'SNAPPER')

리뷰

  • 필요한 물고기 이름만 먼저 필터링을 하고 조인은 진행해서 문제를 풀었다.
  • 하지만 그냥 조인하고 난 뒤에 필터링을 해도 될 것 같아서 더 짧게 풀어보았다. (하지만 짧은 대신 CTE방식으로 풀게 되면 유지보수가 편리하다.)

GROUP BY - 조건에 맞는 사원 정보 조회하기

문제

HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE 테이블에서 2022년도 한해 평가 점수가 가장 높은 사원 정보를 조회하려 합니다. 2022년도 평가 점수가 가장 높은 사원들의 점수, 사번, 성명, 직책, 이메일을 조회하는 SQL문을 작성해주세요.

2022년도의 평가 점수는 상,하반기 점수의 합을 의미하고, 평가 점수를 나타내는 컬럼의 이름은 SCORE로 해주세요.

https://school.programmers.co.kr/learn/courses/30/lessons/284527

풀이

--  HR 그룹화 해서 합계 그리고 정렬 후 1개만 출력 그리고 조인
WITH score AS(
    SELECT EMP_NO, SUM(SCORE) SCORE
    FROM HR_GRADE
    GROUP BY EMP_NO
    ORDER BY SCORE DESC
    LIMIT 1
)

SELECT SCORE, s.EMP_NO, EMP_NAME, POSITION, EMAIL
FROM score s
INNER JOIN HR_EMPLOYEES he
ON s.EMP_NO = he.EMP_NO

리뷰

  • 가장 높은 사원 1명만 출력하는 것이기에 내림차순 정렬 후 LIMIT으로 1개의 컬럼만 추출한다.
  • 조인을 통해 출력할 컬럼들을 select

GitHub

특정 물고기를 잡은 총 수 구하기
https://github.com/lasentia/SQL_Study/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/298518.%E2%80%85%ED%8A%B9%EC%A0%95%E2%80%85%EB%AC%BC%EA%B3%A0%EA%B8%B0%EB%A5%BC%E2%80%85%EC%9E%A1%EC%9D%80%E2%80%85%EC%B4%9D%E2%80%85%EC%88%98%E2%80%85%EA%B5%AC%ED%95%98%EA%B8%B0

조건에 맞는 사원 정보 조회하기
https://github.com/lasentia/SQL_Study/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/284527.%E2%80%85%EC%A1%B0%EA%B1%B4%EC%97%90%E2%80%85%EB%A7%9E%EB%8A%94%E2%80%85%EC%82%AC%EC%9B%90%E2%80%85%EC%A0%95%EB%B3%B4%E2%80%85%EC%A1%B0%ED%9A%8C%ED%95%98%EA%B8%B0

profile
'The best way to get started is to quit talking and begin doing.'

0개의 댓글