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. 실행 결과