# 링크
- solvesql Advent of SQL 2024: https://solvesql.com/collections/advent-of-sql-2024/
- 18일차 - 펭귄 날개와 몸무게의 상관 계수:https://solvesql.com/problems/correlation-penguin/
# 풀이
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
'SQL > solvesql Advent of SQL 2024' 카테고리의 다른 글
[SQL] solvesql Advent of SQL 2024 20일차 (0) | 2024.12.21 |
---|---|
[SQL] solvesql Advent of SQL 2024 19일차 (6) | 2024.12.20 |
[SQL] solvesql Advent of SQL 2024 17일차 (2) | 2024.12.18 |
[SQL] solvesql Advent of SQL 2024 16일차 (0) | 2024.12.17 |
[SQL] solvesql Advent of SQL 2024 15일차 (2) | 2024.12.16 |