https://www.hackerrank.com/challenges/average-population/problem?isFullScreen=true
상당히 쉬운 문젠데 자꾸 비슷한 함수끼리 헷갈려서 정리해본다.
< 문제 >
인구 평균을 버림해서 정수로 값을 도출해라.
< 코드 답안 >
SELECT FLOOR(AVG(POPULATION))
FROM CITY
< 공부 >
> ROUND (값, 반올림해서 남길 자리 수)
- 반올림할 때 사용하는 함수
- 값 뒤에 나오는 숫자는 반올림을 하는 위치가 아니라, 반올림을 해서 남길 숫자다
ㄴ ex) ROUND(3.141592, 2)
2번째 자리인 4에서 반올림을 하는 게 아니라, 두 번째 자리수까지 남게 그 뒤인 3번째에서 반올림을 한다.
해당 숫자는 다른 함수들에게도 똑같이 적용된다.
- 반올림해서 남길 자리수는 option 값이며 생략할 수 있다. 생략할 시 0으로 설정된다.
- 반올림해서 남길 자리의 수는 마이너스 수도 들어갈 수 있다.
더 자세한 내용은 여기를 클릭
select round(3.141592)
from dual
> 3
select round(3.141592, 2)
from dual
> 3.14
* ROUND 함수에 마이너스 수가 들어갈 때
- 소숫점 이하를 버리고 정수에 뒤에서부터 지정된 자릿수까지 반올림
ex) ROUND(-314.1592, -1)
- 소수점 1592를 버리고 -314에서 뒤에서 첫번째 자리인 4에서 반올림. 4니까 버려야하고 -310이 나온다
ex) ROUND(-316.1592, -1)
- 소수점 1592를 버리고, 뒤에서 첫번째 자리인 6에서 반올림. 6이니까 올림하면, 320이 나옴다.
ex) ROUND(-314.1592, -2)
- 소수점 1592를 버리고, -2 자리인 1에서 반올림, 1이니까 버리고 -300
ex) ROUND(-364.1592, -2)
- 소수점 1592를 버리고, -2자리인 6에서 반올림, 6이니까 올리고 -400
> CEIL(값)
- 올림 함수
- 값보다 큰 정수 중 가장 작은 수를 가져오는 함수로써 소수점을 모두 올림
ㄴ 3.14 값 보다 가장 큰 정수들 -> 4,5,6,7,8,9 여러개 있을 텐데 여기서 가장 작은 수인 4
SELECT CEIL(3.141592)
FROM DUAL
> 4
SELECT CEIL(-3.141592)
FROM DUAL
> -3
*유의할 점
SELECT CEIL(3.0)
FROM DUAL
> 3
SELECT CEIL(3.0000000001)
FROM DUAL
> 4
3.0을 올림했을 땐 3이 나온다. 그러나 3.00001을 올림할 땐 4로 올림한다.
(당연한 사실이지만..헷갈리니 주의하도록 하자)
> FLOOR(값)
- 버림 함수
- 값보다 작은 정수 중 가장 큰 수를 가져오며 실수를 무조건 버림(음수일 경우 내림)
ㄴ 3.14보다 작은 정수들은 3,2,1,0,-1 등 있을텐데 여기서 가장 큰 수인 3!
SELECT FLOOR(3.141592)
FROM DUAL
> 3
SELECT FLOOR(-3.141592)
FROM DUAL
> -4
*CEIL가 유의할 점이 비슷하다. FLOOR(3.0)은 3이다. FLOOR(2.999999)는 2다.
> TRUNCATE(값, 버리고 남길 자리 수)
- FLOOR와 같이 버림 함수이다. 그러나 TRUNCATE는 소수점 부분을 단순히 잘라서 날려버린다. 그래서 양수나 음수 모두 TRUNCATE 시 정수만 남는다. FLOOR는 지정된 수보다 작은 정수 중 가장 큰 수를 가져온다. 즉 양수일때는 TRUNCATE와 FLOOR는 자리 수를 설정할 수 있다는 점을 제외하고 차이가 없지만, 음수일 땐 결과 값 자체가 다르가 나타난다. (이해가 안된다면 맨 아래 예제를 보자)
SELECT TRUNCATE(3.141592,2)
FROM DUAL
> 3.14
< TRUNCATE 와 FLOOR 차이 예제 >
<양수일 때> | FLOOR | TRUNCATE |
수식 | SELECT FLOOR(3.14) | SELECT TRUNCATE(3.14, 0) |
결과값 | 3 | 3 |
<음수일 때> | FLOOR | TRUNCATE |
수식 | SELECT FLOOR(-3.14) | SELECT TRUNCATE(-3.14, 0) |
결과값 | -4 | -3 |
참고 사이트
:https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=monkeychoi&logNo=220517384249
'프로그래밍 언어 > SQL' 카테고리의 다른 글
[Hackerrank] Occupations (0) | 2022.01.25 |
---|---|
[Hackkerrank] The PADS (0) | 2022.01.25 |
[MySQL] 한 행 안에 있는 문자열 여러 개를 행으로 분리하기 (0) | 2022.01.14 |
[Hackerrank] Weather Observation Station 5 (0) | 2022.01.13 |
[Hackerrank] Print Prime Numbers 풀이 (MySQL) (0) | 2022.01.13 |