Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 스파르타코딩
- 스파르타 코딩
- 파이썬
- 미세먼지
- 프로젝트
- 오블완
- 스파르타
- 티스토리챌린지
- R
- 내일배움카드
- TiL
- 파이썬 철저입문
- 파이썬 철저 입문
- 텍스트 분석
- hackerrank
- 회귀분석
- 프로그래머스
- wil
- 파이썬 머신러닝 완벽 가이드
- 웹 스크랩핑
- harkerrank
- 파이썬 머신러닝 완벽가이드
- SQL
- Cluster
- 어쩌다 마케팅
- 실전 데이터 분석 프로젝트
- 중회귀모형
- MySQL
- 내일배움
- 내일배움캠프
Archives
- Today
- Total
OkBublewrap
Weather Observation Station 20 / LAT_N 중앙값 구하기 본문
Weather Observation Station 20
문제 설명
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 4decimal places
입력 테이블
STATION
ID
CITY
STATE
LAT_N
LONG_W
풀이
1. LAT_N WINDOW FUNTION으로 넘버링
SELECT
LAT_N,
ROW_NUMBER() OVER (ORDER BY LAT_N) AS RN
FROM STATION
2. 전체 ROW 갯수 구하기
SELECT COUNT(*) AS CNT FROM STATION
3. 홀수 -> cast((CNT + 1) / 2 as int) , 짝수 -> cast((CNT + 2) / 2)
(cnt + 1) / 2 -> 특정 문맥에서 값을 암묵적으로 내림하여 정수로 처리할 수 있음
(cnt + 1) / 2 == cast((cnt + 1) / 2 as int)
with loc as (
select LAT_N,
row_number() over (order by LAT_N) as rn
from station
),
shape as (
select count(*) as row_cnt from station
)
select round(avg(lat_n), 4)
from loc, shape
where rn in ((row_cnt + 1) / 2, (row_cnt + 2) / 2)
'개발 > SQL' 카테고리의 다른 글
상품을 구매한 회원 비율 구하기 (0) | 2025.01.10 |
---|---|
입양 시각 구하기 (0) | 2025.01.10 |
자동차 대여 기록 별 대여 금액 구하기 (0) | 2025.01.10 |
헤비 유저가 소유한 장소 (0) | 2023.03.13 |
즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2023.03.13 |