SQL/solvesql Advent of SQL 2024

[SQL] solvesql Advent of SQL 2024 18일차

주댕이 2024. 12. 19. 00:00

# 링크

 

https://solvesql.com/collections/advent-of-sql-2024/

 

solvesql.com

 

https://solvesql.com/problems/correlation-penguin/

 

solvesql.com

 

 

# 풀이

SELECT
  species,
  ROUND(
    (
      COUNT(*) * SUM(flipper_length_mm * body_mass_g) - SUM(flipper_length_mm) * SUM(body_mass_g)
    ) / (
      SQRT(
        (
          COUNT(*) * SUM(flipper_length_mm * flipper_length_mm) - SUM(flipper_length_mm) * SUM(flipper_length_mm)
        ) * (
          COUNT(*) * SUM(body_mass_g * body_mass_g) - SUM(body_mass_g) * SUM(body_mass_g)
        )
      )
    ),
    3
  ) AS corr
FROM
  penguins
WHERE
  flipper_length_mm IS NOT NULL
  AND body_mass_g IS NOT NULL
GROUP BY
  species
  • SELECT
    • species: species 컬럼을 선택한다.
    • ROUND((COUNT(*) * SUM(flipper_length_mm * body_mass_g) - SUM(flipper_length_mm) * SUM(body_mass_g)) / (SQRT((COUNT(*) * SUM(flipper_length_mm * flipper_length_mm) - SUM(flipper_length_mm) * SUM(flipper_length_mm)) * (COUNT(*) * SUM(body_mass_g * body_mass_g) - SUM(body_mass_g) * SUM(body_mass_g)))), 3) AS corr: flipper_length_mm와 body_mass_g의 상관계수를 계산하여 소수점 셋째 자리까지 반올림한 값을 corr로 저장한다.
  • FROM penguins: penguins 테이블에서 데이터를 가져온다.
  • WHERE
    • flipper_length_mm IS NOT NULL: flipper_length_mm가 NULL이 아닌 데이터만 선택한다.
    • AND body_mass_g IS NOT NULL: body_mass_g이 NULL이 아닌 데이터만 선택한다.
  • GROUP BY species: species 컬럼을 기준으로 그룹화한다.
728x90