2023. 6. 14. 19:30ㆍHackerRank-My SQL
Weather Observation Station 20 | HackerRank
Query the median of Northern Latitudes in STATION and round to 4 decimal places.
www.hackerrank.com
문제
A median is defined as a number separating the higher half of a data set from the lower half. Query the median of the Northern Latitudes (LAT_N) from STATION and round your answer to decimal places.
=> STATION에서 LAT_N의 중앙값을 쿼리하라.
코드
SELECT
ROUND(S1.LAT_N, 4)
FROM STATION AS S1
WHERE (SELECT COUNT(LAT_N) FROM STATION AS S2 WHERE S1.LAT_N < S2.LAT_N) =
(SELECT COUNT(LAT_N) FROM STATION AS S2 WHERE S1.LAT_N > S2.LAT_N)
- 중앙 찾기 = 중앙값의 특징 찾기 = 중앙값의 위 아래로 존재하는 값의 개수는 같다.
노트
ANOTHER CODE BY
https://velog.io/@yeahxne/SQLHackerRankWeather-Observation-Station-20
SELECT ROUND(LAT_N,4)
FROM (SELECT LAT_N, PERCENT_RANK() OVER (ORDER BY LAT_N ASC) AS percent
FROM STATION) A
WHERE percent=0.5;
어케 이해해야 할까?
- PERCENT_RANK함수
- OVER() 함수 or OVER 절
MS: 관련 창 함수를 적용하기 전에 행 집합의 분할과 순서를 결정합니다. 즉, OVER 절은 쿼리 결과 집합 내의 창 또는 사용자 지정 행 집합을 정의합니다. 그런 다음 창 함수가 창의 각 행에 대한 값을 계산합니다. OVER 절에 함수를 사용하여 이동 평균, 누적 집계, 누계 또는 그룹 결과당 상위 N개 결과 등의 집계된 값을 계산할 수 있습니다.
쿼리 결과 집합 내의 창 또는 사용자 지정 행 집합을 정의합니다: 작은 FROM 절 역할
- OVER 절에 들어가는 인수들
- PARTITION BY - 쿼리 결과 집합을 파티션으로 분할합니다: 작은 FROM 절 역할에 GROUP BY를 끼얹음
- ORDER BY - 결과 집합의 각 파티션 내에서 행의 논리적 순서를 정의합니다: 정렬 맞음
- ROWS/RANGE - 파티션 내의 시작점 및 끝점을 지정하여 파티션 내의 행을 제한합니다. ORDER BY 인수가 필요하며, ORDER BY 인수가 지정된 경우 기본값은 파티션 시작부터 현재 요소까지입니다
ANOTHER CODE 2
SELECT ROUND(LAT_N,4)
FROM (SELECT LAT_N, ROW_NUMBER() OVER(ORDER BY LAT_N) rownum FROM STATION) K1
WHERE rownum = (SELECT CEIL(COUNT(*)/2) FROM STATION);
- ROW_NUMBER() OVER () 함수
- OVER에 들어가는 컬럼을 기준을 기준으로 열 번호를 생성하는 듯?
두 번째 시도
SELECT ROUND(S1.LAT_N,4) FROM STATION AS S1
WHERE (SELECT COUNT(S2.LAT_N) FROM STATION AS S2 WHERE S1.LAT_N > S2.LAT_N ORDER BY S2.LAT_N)
= (SELECT COUNT(S3.LAT_N) FROM STATION AS S3 WHERE S1.LAT_N < S3.LAT_N ORDER BY S3.LAT_N)
ORDER BY LAT_N
- 처음이랑 같네
참조
OVER 절(Transact-SQL) - SQL Server
쿼리 결과 집합 내의 사용자 지정 행 집합을 정의하는 OVER 절의 Transact-SQL 참조입니다.
learn.microsoft.com
PERCENT_RANK(Transact-SQL) - SQL Server
PERCENT_RANK(Transact-SQL)
learn.microsoft.com
ROW_NUMBER(Transact-SQL) - SQL Server
ROW_NUMBER 함수의 Transact-SQL 참조입니다. 이 함수는 결과 집합의 출력 번호를 매깁니다.
learn.microsoft.com
'HackerRank-My SQL' 카테고리의 다른 글
Prepare > SQL > Advanced Join > 15 Days of Learning SQL (0) | 2023.06.19 |
---|---|
Prepare > SQL > Advanced Select > Occupations (0) | 2023.06.14 |
Prepare > SQL > Alternative Queries > Draw The Triangle 2 (0) | 2023.06.12 |
Prepare > SQL > Alternative Queries > Draw The Triangle 1 (0) | 2023.06.11 |
Prepare > SQL > Advanced Join > Interviews (0) | 2023.06.08 |