solvesql - SQL문제
solvesql - 데이터 그룹으로 묶기(Round, Variance, Group By)
정차노
2024. 10. 25. 17:42
문제 출처 : https://solvesql.com/problems/group-by/
https://solvesql.com/problems/group-by/
solvesql.com
1. 문제
난이도1, 정답률 28.74%
points 테이블은 프란시스 앤스컴이 만든 Anscombe's quartet 데이터를 담고 있습니다. 이 데이터는 quartet 컬럼에 의해 4개의 서브셋으로 나뉘어지고, 각 서브셋은 평균, 표본 분산, 상관계수 등이 거의 동일하나 데이터의 분포를 시각화하면 전혀 다른 분포를 가지는 특징이 있습니다.
points 테이블에 쿼리를 수행해 quartet으로 구분되는 각 서브셋 데이터에 대해서 아래 통계량을 계산하는 쿼리를 작성해주세요. 계산된 값은 소수점 아래 셋째 자리에서 반올림 해야 합니다. 결과 데이터에는 아래 5개의 컬럼이 존재 해야 합니다.
- quartet - 콰르텟
- x_mean - x 평균
- x_var - x 표본 분산
- y_mean - y 평균
- y_var - y 표본 분산
힌트
이 문제에서 구해야 하는 분산은 모분산이 아니라 표본 분산입니다. DBMS에 따라 표본 분산을 구하는 함수가 다를 수 있으니 유의해주세요.
2. 조건
- 쿼리 결과에는 문제에서 제공한 5개의 컬럼이 출력되어야 함(SELECT)
- 계산된 값은 소수점 아래 셋째 자리에서 반올림 해야 함(SELECT)
- quartet값을 기준으로 평균과 표본분산을 구하기 위해서 기준이 되는 값을 그루핑(GROUP BY)
3. 쿼리
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
쿼리 결과로 quartet, x y 의 평균, x y의 표본분산 값을 구해주어야 한다.
기준이 되는 값은 quartet이기 때문에 Group By를 사용하여 quartet의 값을 그룹핑하고 x y의 평균을 AVG(), x y의 표본분산을 Variance()로 구해준다.
또한 조건 중 소수점 아래 셋째 자리에서 반올림을 해줘야 하기 때문에 Round()를 사용해서 2번째 자리까지만 보여질 수 있도록 한다.
4. 실행 결과