프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE LIKE 'SUV';
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) >= 29, '장기 대여', '단기 대여' )AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;
SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%네비게이션%'
ORDER BY CAR_ID DESC;
SELECT car_type , count(*) as cars
from CAR_RENTAL_COMPANY_CAR
where options REGEXP '통풍시트|열선시트|가죽시트'
group by car_type
order by car_type
SELECT CAR_ID, DATEAVG AS AVERAGE_DURATION
FROM
(SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE,START_DATE)+1),1) AS DATEAVG
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
) A
WHERE A.DATEAVG >= 7
ORDER BY A.DATEAVG DESC, A.CAR_ID DESC
SELECT DISTINCT C.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR C LEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY H ON C.CAR_ID=H.CAR_ID
WHERE C.CAR_TYPE LIKE "세단" AND MONTH(H.START_DATE) = 10
ORDER BY C.CAR_ID DESC;
자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기
SELECT CAR_ID, CASE WHEN max('2022-10-16' BETWEEN START_DATE AND END_DATE) THEN '대여중'
ELSE '대여 가능' END AS AVAILAVILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
WITH HIS AS (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(START_DATE, '%Y-%m') >= '2022-08' AND DATE_FORMAT(START_DATE, '%Y-%m') <= '2022-10'
GROUP BY CAR_ID
HAVING COUNT(*) >= 5
)
SELECT MONTH(START_DATE) AS MONTH, C.CAR_ID, COUNT(*) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY C RIGHT JOIN HIS H ON C.CAR_ID=H.CAR_ID
GROUP BY MONTH, CAR_ID
HAVING MONTH IN (8,9,10)
ORDER BY MONTH ASC, CAR_ID DESC;
WITH CAR AS (
SELECT C.CAR_ID, CAR_TYPE, DAILY_FEE, MAX(START_DATE), MAX(END_DATE),
IF(MAX(START_DATE) > '2022-11-30' OR MAX(END_DATE) <'2022-11-01', true, false) AS RANT
FROM CAR_RENTAL_COMPANY_CAR C JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY H
ON C.CAR_ID LIKE H.CAR_ID
WHERE C.CAR_TYPE IN ('세단', 'SUV')
GROUP BY CAR_ID
ORDER BY CAR_ID ASC, START_DATE ASC
)
SELECT CAR_ID, C.CAR_TYPE, ROUND(DAILY_FEE*RATE*0.01*30) AS FEE
FROM CAR C LEFT JOIN (SELECT CAR_TYPE, 100-DISCOUNT_RATE AS RATE FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN WHERE DURATION_TYPE LIKE '30일 이상' ) D
ON C.CAR_TYPE = D.CAR_TYPE
WHERE C.RANT IS TRUE AND DAILY_FEE*RATE*0.01*30 BETWEEN 500000 AND 2000000
ORDER BY FEE DESC, CAR_TYPE ASC, CAR_ID DESC;
WITH DISCOUNT AS (
SELECT (CASE WHEN DURATION_TYPE LIKE '7일 이상' THEN 7
WHEN DURATION_TYPE LIKE '30일 이상' THEN 30
WHEN DURATION_TYPE LIKE '90일 이상' THEN 90 END
)AS DURATION, (100 - DISCOUNT_RATE) * 0.01 AS DISCOUNT_RATE
FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN
WHERE CAR_TYPE LIKE '트럭'
),
TRUK AS (
SELECT HISTORY_ID, DATEDIFF(END_DATE, START_DATE)+1 AS DAYS,
(CASE WHEN DATEDIFF(END_DATE, START_DATE)+1 >=90 THEN 90
WHEN DATEDIFF(END_DATE, START_DATE)+1 >= 30 THEN 30
WHEN DATEDIFF(END_DATE, START_DATE)+1 >= 7 THEN 7
ELSE 0 END) AS DAY_TYPE, DAILY_FEE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY H LEFT JOIN CAR_RENTAL_COMPANY_CAR C ON C.CAR_ID=H.CAR_ID
WHERE CAR_TYPE LIKE '트럭'
)
SELECT HISTORY_ID, ROUND(DAILY_FEE * IFNULL(DISCOUNT_RATE, 1) * DAYS) AS FEE
# select *
FROM DISCOUNT D RIGHT JOIN TRUK T ON T.DAY_TYPE=D.DURATION
ORDER BY FEE DESC, HISTORY_ID DESC;
'Algorithm' 카테고리의 다른 글
[Algo] 백준 2431 회전 초밥 (0) | 2024.09.20 |
---|---|
[Algo] 백준 18427 함께 블록 쌓기 (1) | 2024.09.16 |
[Algo] 백준 17352 여러분의 다리가 되어 드리겠습니다 JAVA (0) | 2024.09.15 |
[SQL] 프로그래머스 대장균 세트 (1) | 2024.09.13 |
[Algo] 프로그래머스 게임 맵 최단거리 (0) | 2024.08.26 |