SQL_Programmers 코딩 테스트 4

DA_LEESUNHO·2025년 11월 6일

Practice & Project

목록 보기
4/5

학습사이트 > https://school.programmers.co.kr/

한 해에 잡은 물고기 수 구하기

FISHINFO 테이블에서 2021년도에 잡은 물고기 수를 출력하는 SQL 문을 작성해주세요.
이 때 컬럼명은 'FISH_COUNT' 로 지정해주세요.

SELECT
    COUNT(ID) AS FISH_COUNT
FROM FISH_INFO
WHERE YEAR(TIME) = '2021'

해당 문제에서 포인트는 YEAR 함수 이다.
FISH_INFO 테이블은 아래와 같다.

YEAR 함수를 이용하여 연도(4자리) 값을 추출, 조건절에 사용하여 풀었다.


분기별 분화된 대장균의 개체 수 구하기

각 분기(QUARTER)별 분화된 대장균의 개체의 총 수(ECOLI_COUNT)를 출력하는 SQL 문을 작성해주세요. 이때 각 분기에는 'Q' 를 붙이고 분기에 대해 오름차순으로 정렬해주세요.
대장균 개체가 분화되지 않은 분기는 없습니다.

SELECT
    CASE WHEN A.EXT_MONTH BETWEEN 1 AND 3 THEN '1Q'
    WHEN A.EXT_MONTH BETWEEN 4 AND 6 THEN '2Q'
    WHEN A.EXT_MONTH BETWEEN 7 AND 9 THEN '3Q' ELSE '4Q' END AS QUARTER,
    COUNT(A.ID) AS ECOLI_COUNT
FROM
    (
    SELECT 
        ID,
        MONTH(DATE_FORMAT(DIFFERENTIATION_DATE, '%Y-%m-%d')) AS EXT_MONTH
    FROM ECOLI_DATA
    ) A
GROUP BY QUARTER
ORDER BY QUARTER

해당 문제에서 포인트는 CASE 구문, 날짜 함수 이다.
ECOLIDATA 테이블은 아래와 같다.



문제의 목적과 그에 따른 조건들을 살펴보면서, 데이터 추출에 필요한 작업을 정리해보았다.

1) DIFFERENTIATION_DATE 컬럼에서 월 값 출력
2) CASE WHEN 구문으로 각 분기 데이터 추출
3) COUNT 함수 사용

쿼리 작성에 대한 부분은 다양하다.
코드테스트를 목적으로 한다면, 문제에 명시된 조건들을 토대로 작성을 하면 된다.

실무에서는,
쿼리를 날리는 매순간 비용(리소스) 이 들기 때문에, 줄일 수 있는 형태로 작성되어야 한다고 함.

EX> 하나의 쿼리에서 테이블을 참고하는 횟수를 최소화 (WITH 구문 등)

profile
성장과 회고를 기록하는 일기장

0개의 댓글