코딩테스트/SQL 코드카타

MySQL 해커랭크 | Average Population of Each Continent ( ROUND, CEIL, FLOOR 함수 )

ANNASENA 2024. 7. 16. 08:00
728x90

 

문제

https://www.hackerrank.com/challenges/average-population-of-each-continent/problem?isFullScreen=true

 

Average Population of Each Continent | HackerRank

Query the names of all continents and their respective city populations, rounded down to the nearest integer.

www.hackerrank.com

 

  • Query the names of all the continents (COUNTRY.Continent)
  • Query their respective average city populations (CITY.Population)
    • rounded down to the nearest integer. 
  • CITY.CountryCode = COUNTRY.Code 

 

테이블

CITY COUNTRY

 

풀이과정

# 오답1

CITY 테이블에 LEFT JOIN을 했더니 COTINENT값에 NULL 값이 생김

→ CITY테이블의 NAME은 있는데 CONTINENT 정보는 NULL인 경우가 있음

1
2
3
4
SELECT C.NAME, CT.CONTINENT, ROUND(AVG(C.POPULATION),0)
FROM CITY C
LEFT JOIN COUNTRY CT ON C.COUNTRYCODE = CT.CODE
GROUP BY CT.CONTINENT, C.NAME
cs

 

# 오답2

문제에서 rounded down 하라고 해서 ROUND(숫자, 0)을 해줬는데 틀림

1
2
3
4
SELECT CT.CONTINENT, ROUND(AVG(C.POPULATION),0)
FROM CITY C
LEFT JOIN COUNTRY CT ON C.COUNTRYCODE = CT.CODE
GROUP BY 1
cs

 

# 정답

(1) INNER JOIN 사용

(2) rounded down → FLOOR 함수 사용

1
2
3
4
SELECT CT.CONTINENT, FLOOR(AVG(C.POPULATION))
FROM CITY C
INNER JOIN COUNTRY CT ON C.COUNTRYCODE = CT.CODE
GROUP BY 1
cs

 

배운점

▶ ROUND, CEIL, FLOOR 차이

  • ROUND(숫자, 자릿수) : 반올림
  • CEIL(숫자) : 올림
  • FLOOR(숫자) : 버림

https://velog.io/@donghoim/MySQL-SQL-ROUND-FLOOR-CEIL-%ED%95%A8%EC%88%98

 

[MySQL] SQL ROUND, FLOOR, CEIL 함수

ROUND 는 정해진 자릿수에 따라 반올림을 하는 역활을 하는 함수입니다.구하려는 소수점 자리수의 한 자리 아래의 숫자를 반올림 혹은 버림한다.반올림 여부의 값을 0 또는 생략할 경우 반올림,

velog.io

728x90