Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- dfs
- bfs
- Java
- C언어
- level 3
- Lv. 3
- Python
- Lv. 1
- DP
- Dynamic Programming
- SQL 고득점 KIT
- 너비 우선 탐색
- select
- softeer
- javascript
- Lv. 0
- SQL
- 프로그래머스
- 파이썬
- 오블완
- 소프티어
- group by
- 동적계획법
- join
- 티스토리챌린지
- 깊이 우선 탐색
- 자바스크립트
- programmers
- Lv. 2
- LEVEL 2
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
프로그래머스 SQL 고득점 Kit Lv 1 String, Date 2 문제 모음 본문
1. 자동차 대여 기록에서 장기/단기 대여 구분하기
https://school.programmers.co.kr/learn/courses/30/lessons/151138
정답 코드 1
SELECT
HISTORY_ID,
CAR_ID,
DATE_FORMAT(START_DATE, "%Y-%m-%d") AS START_DATE,
DATE_FORMAT(END_DATE, "%Y-%m-%d") AS END_DATE,
IF (DATEDIFF(END_DATE, START_DATE) + 1 >= 30, "장기 대여", "단기 대여") AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE "2022-09%"
ORDER BY HISTORY_ID DESC;
정답 코드 2
SELECT
HISTORY_ID,
CAR_ID,
DATE_FORMAT(START_DATE, "%Y-%m-%d") AS START_DATE,
DATE_FORMAT(END_DATE, "%Y-%m-%d") AS END_DATE,
CASE
WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 30
THEN '장기 대여'
ELSE '단기 대여'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) = 9 AND YEAR(START_DATE) = 2022
ORDER BY HISTORY_ID DESC;
Key Point
DATEDIFF 함수
문법 : DATEDIFF(date1, date2)
설명 :
- DATEDIFF 함수는 date1에서 date2를 뺀 결과를 일 단위로 반환합니다. 반환되는 값은 정수이며, date1이 date2보다 이후 날짜일 경우 양수, 그보다 이전 날짜일 경우 음수가 됩니다.
- 결과는 두 날짜 사이의 전체 일수 차이를 나타냅니다. 즉, date1과 date2 사이에 몇 일이 있는지 알려줍니다.
예시 :
- SELECT DATEDIFF('2023-12-25', '2023-12-01') AS DaysDifference;
- 이 쿼리는 2023년 12월 25일과 12월 1일 사이의 일수 차이를 계산합니다. 결과는 24일이 됩니다.
- 하지만 단순히 몇 일 차이가 나는지 구하는 문제가 아니라 몇 일 동안 대여했는지를 나타내야 하기 때문에 뺀 값에서 +1을 해주는 것이 포인트다.
CASE 구문
문법 :
- 단순 CASE 구문:
- expression은 평가될 표현식입니다.
- value1, value2, ...은 expression과 비교될 값입니다.
- result1, result2, ...은 각 경우에 반환될 결과입니다.
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE resultN
END
- 검색 CASE 구문 (여기서 사용된 형태):
- condition1, condition2, ...은 참이나 거짓으로 평가될 조건입니다.
- result1, result2, ...은 각 조건에 대해 반환될 결과입니다.
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
예시 :
SELECT
EmployeeID,
CASE DepartmentID
WHEN 1 THEN 'IT'
WHEN 2 THEN 'HR'
ELSE 'Unknown'
END AS DepartmentName
FROM Employees;
이 쿼리는 각 직원의 부서 ID에 따라 부서 이름을 반환합니다.
2. 특정 옵션이 포함된 자동차 리스트 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/157343
SELECT
CAR_ID,
CAR_TYPE,
DAILY_FEE,
OPTIONS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE "%네비게이션%"
ORDER BY CAR_ID DESC;
'SQL' 카테고리의 다른 글
프로그래머스 Lv. 2 가격이 제일 비싼 식품의 정보 출력하기 SQL (0) | 2024.01.01 |
---|---|
프로그래머스 SQL 고득점 Kit Lv. 2 SELECT 2문제 모음 (0) | 2024.01.01 |
프로그래머스 SQL 고득점 Kit Lv 1 IS NULL 4 문제 모음 (0) | 2023.12.30 |
프로그래머스 SQL 고득점 Kit Lv 1 SUM, MAX, MIN 2 문제 모음 (0) | 2023.12.29 |
프로그래머스 SQL 고득점 Kit Lv 1 SELECT (2) 6 문제 모음 (1) | 2023.12.29 |