코트카타 시간에 알고리즘 문제를 풀고 SQL문제도 있었다는걸 오늘에서야 알게되었다 .. ㅎ
프로그래머스에서 SQL 문제도 풀어볼 수 있다니 너무 좋다.
하지만 SQL을 3주만에 봤더니 그새 잃어버려서 다시 정리 겸 적어본다.
SUBSTR (SUBSTRING)
원본 데이터 Address컬럼에 저장되어있는 주소 목록들 "서울특별시 강남구 대치동"
SUBSTR(Address, 1, 2) => "서울"
REPLACE
위 예시에서 이어서 해보자면
REPLACE(Address, '대치동', '강남동')
CONCAT
역시 위 예제에서 이어서
CONCAT('(', SUBSTR(Address, 1, 2), ')') => (서울)
SELECT
customer_id,
SUM(order_amount) AS total_order_amount
FROM
orders
GROUP BY
customer_id
HAVING
SUM(order_amount) >= 1000;
고객별로 주문 총액을 계산하고 총액이 천원 이상인 고개만 조회하는 SQL
ROUND
ROUND는 정해진 자릿수에 따라 반올림 하는 역할을 하는 함수이다.
구하려는 소수점 자리수의 한 자리 아래의 숫자를 반올림 하거나 버린다.
반올림 여부의 값을 0 또는 생각하는 경우에는 반올림, 음수값일 경우는 버린다.
ROUND(반올림할 대상 숫자, 반올림 기준)
SELECT ROUND(10.349) -- 10
SELECT ROUND(10.349, 1) -- 10.3
SELECT ROUND(10.349, 2) -- 10.35
SELECT ROUND(11.546) -- 12
SELECT ROUND(11.546, 1) -- 11.5
SELECT ROUND(11.546, 2) -- 11.54
반올림 기준에다 -1을 대입하면 소수점 기준으로 오른쪽이 아닌 왼쪽을 반올림 대상으로 정한다.
SELECT ROUND(10.349, -1) -- 10
SELECT ROUND(11.546, -1) -- 10
SELECT ROUND(48,-1) -- 50
CEILING
소수점 이하를 무조건 올리는 함수이다.
ROUND와 다르게 무조건 정수값으로 출력된다.
CEILING(숫자)
SELECT CEILING(21.35) -- 22
SELECT CEILING(23.56) -- 24
FLOOR
소주점 이하를 무조건 버리는 함수이다.
CEILING과 동일하게 정수값으로 출력된다.
FLOOR(숫자)
SELECT FLOOR(23.59) --23
SELECT FLOOR(25.32) --25