문제
https://school.programmers.co.kr/learn/courses/30/lessons/299310
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 소요 시간 : 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절을 이용하여 가독성이 높아졌다.
[MySQL]WITH문을 사용하여 가상의 테이블을 만들어 사용하기
SQL을 사용하여 대량의 데이터를 다루는 경우, 임의의 결과를 저장할 때마다 테이블에 저장할 수 없다. 그렇다고 해서 그때마다 테이블을 생성할 수도 없다. 이러한 이 유로 인해 임시 결과를 정
mooonstar.tistory.com
결과 : 정답
정리
컬럼간 사칙연산이 단순히 가능하다..!!
https://comster.tistory.com/758
MySQL 계산하거나 문자열을 결합해서 표시하기, MySQL 함수 사용하기
MySQL 계산하거나 문자열을 결합해서 표시하기, MySQL 함수 사용하기 MySQL 컬럼 값을 계산해서 표시하기 컬럼이 a, b가 있다면 a, b끼리 사칙 연산을 해서 출력할 수 있습니다. 더하기 : select a + b from
comster.tistory.com
가독성을 높일 수 있게 짜는 습관을 들여야겠다!
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 콜라츠 추측 - Java (0) | 2024.11.16 |
---|---|
[프로그래머스] 핸드폰 번호 가리기 - Java (1) | 2024.11.15 |
[프로그래머스] 서울에서 김서방 찾기 - Java (0) | 2024.11.10 |
[프로그래머스] ROOT 아이템 구하기 - MySQL (0) | 2024.11.09 |
[프로그래머스] 조건에 맞는 사원 정보 조회하기 - MySQL (0) | 2024.11.07 |
문제
https://school.programmers.co.kr/learn/courses/30/lessons/299310
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 소요 시간 : 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절을 이용하여 가독성이 높아졌다.
[MySQL]WITH문을 사용하여 가상의 테이블을 만들어 사용하기
SQL을 사용하여 대량의 데이터를 다루는 경우, 임의의 결과를 저장할 때마다 테이블에 저장할 수 없다. 그렇다고 해서 그때마다 테이블을 생성할 수도 없다. 이러한 이 유로 인해 임시 결과를 정
mooonstar.tistory.com
결과 : 정답
정리
컬럼간 사칙연산이 단순히 가능하다..!!
https://comster.tistory.com/758
MySQL 계산하거나 문자열을 결합해서 표시하기, MySQL 함수 사용하기
MySQL 계산하거나 문자열을 결합해서 표시하기, MySQL 함수 사용하기 MySQL 컬럼 값을 계산해서 표시하기 컬럼이 a, b가 있다면 a, b끼리 사칙 연산을 해서 출력할 수 있습니다. 더하기 : select a + b from
comster.tistory.com
가독성을 높일 수 있게 짜는 습관을 들여야겠다!
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 콜라츠 추측 - Java (0) | 2024.11.16 |
---|---|
[프로그래머스] 핸드폰 번호 가리기 - Java (1) | 2024.11.15 |
[프로그래머스] 서울에서 김서방 찾기 - Java (0) | 2024.11.10 |
[프로그래머스] ROOT 아이템 구하기 - MySQL (0) | 2024.11.09 |
[프로그래머스] 조건에 맞는 사원 정보 조회하기 - MySQL (0) | 2024.11.07 |