티스토리 뷰

프로그래머스 SQL 고득점 kit 13일차( JOIN 5문제, String, Date 13문제)

 

1. 날짜에 단순히 + / - 를하면, 문자열을 정수변환해서 잘못 계산한다

20220916 - 20220807 = 109

 

2. 날짜/시간의 계산

1) 빼기

- 날짜: DATEDIFF

SELECT DATEDIFF('2022-09-16', '2022-08-07') AS days_difference;

# 40

- 시간:  TIMESTAMPDIFF

-- 두 날짜의 시간 단위 차이
SELECT TIMESTAMPDIFF(HOUR, '2022-08-07', '2022-09-16') AS hours_difference;

 

2) 더하기: DATE_ADD (SQL표준) 또는 ADDATE(MYSQL)

-- 10일 더하기
SELECT DATE_ADD('2022-08-07', INTERVAL 10 DAY) AS new_date;

-- 5시간 더하기
SELECT DATE_ADD('2022-08-07 14:30:00', INTERVAL 5 HOUR) AS new_date;

-- 30분 더하기
SELECT DATE_ADD('2022-08-07 14:30:00', INTERVAL 30 MINUTE) AS new_date;

-- 2개월 더하기
SELECT DATE_ADD('2022-08-07', INTERVAL 2 MONTH) AS new_date;

 

3. 자동차 평균 대여 기간 구하기

SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE,START_DATE) +1 ),1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVERAGE_DURATION >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC

 

4. 분기 추출: QUARTER

SELECT QUARTER('2024-12-14') AS quarter;

# 4

※ GROUP BY 시 SELECT에 문자열을 추가하고 싶으면 GROUP BY에도 추가해줘야 한다!!

SELECT CONCAT(QUARTER(DIFFERENTIATION_DATE), 'Q') AS QUARTER, COUNT(ID) AS ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY CONCAT(QUARTER(DIFFERENTIATION_DATE), 'Q')
ORDER BY QUARTER

 

5. 문자열 인덱싱

1) LEFT(문자열, 길이) : 문자열 앞 N자리

SELECT LEFT('2024-12-14', 2) AS first_two_chars;

# 20

 

2) SUBSTRING(문자열, 추출 시작 위치, 추출할 길이)

# 위치는 0부터 시작 안하고 1부터 시작!!

SELECT SUBSTRING('2024-12-14', 1, 4) AS year_part;

# 2024
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함