일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- python
- lv4
- 파이썬
- Growth hacking
- Level2
- LeetCode
- join
- Stack
- lambda
- Queue
- time complexity
- programmers
- mysql
- 프로그래머스
- level4
- 코딩
- 완전탐색
- 코테
- counter
- 코딩테스트
- coding
- collections
- coding test
- tableau
- import re
- itertools
- 조합
- cte
- sql
- AARRR
Archives
- Today
- Total
ror_coding
[Programmers] 연도별 대장균 크기의 편차 구하기 - 299310 본문
728x90
SELECT 절에 MAX() 함수를 사용하면 오류가 생기는 케이스이다.
FROM 절에 table 두 개를 쓰고 WHERE 절에서 묶어준다. 이때 FROM 에서 sub query 를 사용한다 !
(아직 어색한 코드 순서라 사용하기 어렵긴 하지만 연습하면 유용할 것 같다 !)
Question
분화된 연도(YEAR), 분화된 연도별 대장균 크기의 편차(YEAR_DEV), 대장균 개체의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 분화된 연도별 대장균 크기의 편차는 분화된 연도별 가장 큰 대장균의 크기 - 각 대장균의 크기로 구하며 결과는 연도에 대해 오름차순으로 정렬하고 같은 연도에 대해서는 대장균 크기의 편차에 대해 오름차순으로 정렬해주세요.
Point
- JOIN ON을 쓰지 않고 FROM 에 table 두 개를 쓰고 WHERE 에서 묶음.
- SELECT 절에 MAX(SIZE_OF_COLONY) - A.SIZE_OF_COLONY 사용시 오류 발생.
Code (After)
SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR,
MAX(SIZE_OF_COLONY) OVER(PARTITION BY YEAR(DIFFERENTIATION_DATE)) - SIZE_OF_COLONY AS YEAR_DEV,
ID
FROM ECOLI_DATA
ORDER BY 1, 2
Code (Before)
SELECT B.YEAR AS YEAR,
MAX_SIZE-A.SIZE_OF_COLONY AS YEAR_DEV,
ID
FROM ECOLI_DATA A, ( SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, MAX(SIZE_OF_COLONY) AS MAX_SIZE
FROM ECOLI_DATA
GROUP BY YEAR ) B
WHERE YEAR(A.DIFFERENTIATION_DATE) = B.YEAR
ORDER BY 1, 2

now me
On my github
728x90
'Coding Test > SQL' 카테고리의 다른 글
[Programmers] 부모의 형질을 모두 가지는 대장균 찾기 - 301647 (0) | 2024.10.01 |
---|---|
[Programmers] 조건에 맞는 개발자 찾기 - 276034 (1) | 2024.10.01 |
[Programmers] 업그레이드 된 아이템 구하기 - 273711 (0) | 2024.09.30 |
[Programmers] 노선별 평균 역 사이 거리 조회하기 - 284531 (2) | 2024.09.30 |
[Programmers] 분기별 분화된 대장균의 개체 수 구하기 - 299308 (0) | 2024.09.29 |