문제 설명
Anscombe's Quartet 데이터는 4개의 그룹(quartet)으로 나뉘어져 있다.
각 그룹은
- x 평균
- x 표본분산
- y 평균
- y 표본분산
이 거의 동일하지만,
실제로 그래프로 그려보면 전혀 다른 분포를 가진다.
각 quartet별로
x 평균
x 표본분산
y 평균
y 표본분산
을 계산해야 한다.
또한
소수점 셋째 자리에서 반올림
해야 한다.
즉
소수점 둘째 자리까지 출력
이다.
내가 작성한 코드
SELECT
quartet,
ROUND(AVG(x), 2) AS 'x_mean',
ROUND(VARIANCE(x), 2) AS 'x_var',
ROUND(AVG(y), 2) AS 'y_mean',
ROUND(VARIANCE(y), 2) AS 'y_var'
FROM points
GROUP BY quartet
틀린 이유
1. VARIANCE()는 모분산
문제에서 힌트
모분산이 아니라 표본분산
이라고 명시함.
현재 사용한
VARIANCE()
는 DBMS에 따라
모분산(VAR_POP)
을 의미하는 경우가 많다.
따라서
MySQL 기준
VAR_SAMP()
사용.
표본분산 vs 모분산
모분산
공식
Σ(x - 평균)² / n
표본분산
공식
Σ(x - 평균)² / (n-1)
차이
분모가 n인지
n-1인지
정답 코드
SELECT
quartet,
ROUND(AVG(x), 2) AS x_mean,
ROUND(VAR_SAMP(x), 2) AS x_var,
ROUND(AVG(y), 2) AS y_mean,
ROUND(VAR_SAMP(y), 2) AS y_var
FROM points
GROUP BY quartet
ORDER BY quartet;
핵심 개념
평균
AVG(x)
표본분산
VAR_SAMP(x)
모분산
VAR_POP(x)
자주 나오는 통계 함수
AVG() -- 평균
SUM() -- 합계
COUNT() -- 개수
MIN() -- 최솟값
MAX() -- 최댓값
VAR_SAMP() -- 표본분산
VAR_POP() -- 모분산
STDDEV_SAMP() -- 표본표준편차
STDDEV_POP() -- 모표준편차
기억할 패턴
SELECT
그룹컬럼,
AVG(값),
VAR_SAMP(값)
FROM 테이블
GROUP BY 그룹컬럼
한 줄 요약
이 문제의 핵심은 평균을 구하는 것이 아니라 "표본분산(VAR_SAMP)"을 사용해야 한다는 점이다. VARIANCE() 대신 VAR_SAMP()를 사용하여 quartet별 평균과 표본분산을 계산해야 한다.
'TIL' 카테고리의 다른 글
| [TIL157] solvesql - 언더스코어(_) 가 포함되지 않은 데이터 찾기 (0) | 2026.06.18 |
|---|---|
| [TIL156] solvesql - 세션 재정의하기 (0) | 2026.06.18 |
| [TIL154] solvesql - 배송예정일 예측 성공과 실패 (0) | 2026.06.18 |
| [TIL153] HackerRank - SQL (0) | 2026.06.18 |
| [TIL152] HackerRank - Prepare - SQL (0) | 2026.06.17 |