반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/299310
- 소요 시간 : 15분
- 난이도 : LV 2
나의 풀이
접근 방법
1. GROUP BY를 이용해 연도별로 최대 대장균의 크기를 구한 테이블을 만든다.
2. 원래 테이블에서 날짜는 연도로 변환하고, ID, 대장균 개수 컬럼 필요한 컬럼 3개만 추출한 테이블을 만든다.
3. 1과 2를 조인하여 뺄셈을 진행한다.
4. ORDER_BY를 이용해 정렬한다.
코드
-- 코드를 작성해주세요
SELECT E.YEAR, M.MAX_COLONY-E.SIZE_OF_COLONY AS YEAR_DEV, E.ID
FROM (SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, SIZE_OF_COLONY, ID
FROM ECOLI_DATA) AS E
JOIN (SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, MAX(SIZE_OF_COLONY) AS MAX_COLONY
FROM ECOLI_DATA
GROUP BY YEAR(DIFFERENTIATION_DATE)) AS M
ON E.YEAR = M.YEAR
ORDER BY YEAR, YEAR_DEV
결과 : 정답
다른 사람의 풀이
코드
WITH MAX_TABLE AS (
SELECT
YEAR(DIFFERENTIATION_DATE) YEAR, MAX(SIZE_OF_COLONY) MAX_SIZE
FROM
ECOLI_DATA
GROUP BY
YEAR
)
SELECT
YEAR(DIFFERENTIATION_DATE) YEAR, B.MAX_SIZE - A.SIZE_OF_COLONY YEAR_DEV, A.ID
FROM
ECOLI_DATA A JOIN MAX_TABLE B ON YEAR(DIFFERENTIATION_DATE) = B.YEAR
ORDER BY
YEAR, YEAR_DEV
서브쿼리가 아닌 with절을 이용하여 가독성이 높아졌다.
결과 : 정답
정리
컬럼간 사칙연산이 단순히 가능하다..!!
https://comster.tistory.com/758
가독성을 높일 수 있게 짜는 습관을 들여야겠다!
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 핸드폰 번호 가리기 - Java (1) | 2024.11.15 |
---|---|
[프로그래머스] H-Index - Java (1) | 2024.11.14 |
[프로그래머스] 서울에서 김서방 찾기 - Java (0) | 2024.11.10 |
[프로그래머스] ROOT 아이템 구하기 - MySQL (0) | 2024.11.09 |
[프로그래머스] 조건에 맞는 사원 정보 조회하기 - MySQL (0) | 2024.11.07 |