조건에 부합하는 중고거래 상태 조합하기
SQL의 조건 문제 중 기본적인 문제인 것 같다 .
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
CASE
WHEN STATUS = 'SALE' THEN '판매중'
WHEN STATUS = 'RESERVED' THEN '예약중'
WHEN STATUS = 'DONE' THEN '거래완료'
END AS STATUS
FROM USED_GOODS_BOARD
WHERE TO_CHAR(CREATED_DATE, 'YYYY-MM-DD') = '2022-10-05'
ORDER BY BOARD_ID DESC
문제출처
자동차 대여 기록에서 장기/단기 대여 구분하기
해야할 것들
1.2022년 9월에 속하는 대여 기록
2.대여기간이 30일 이상
*주의
end-date - start_date +1
+1을 해주는 이유는 같은 날 빌려서 같은 날 반납하면, 대여기간을 0일로 계산하기 때문에 +1을 한다.
-> 장기
-> 단기
3. 대여 기록 ID 기준 DESC
SELECT HISTORY_ID
, CAR_ID
, TO_CHAR(START_DATE, 'YYYY-MM-DD') AS START_DATE
, TO_CHAR(END_DATE, 'YYYY-MM-DD') AS END_DATE
, CASE
WHEN END_DATE - START_DATE + 1 >= 30
THEN '장기 대여'
ELSE '단기 대여'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE, 'YYYY-MM') = '2022-09'
ORDER BY HISTORY_ID DESC
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/151138
다시 자동차 평균 대여 기간 구하기
TODO
자동차 ID 기준으로 그룹바이
AVG(종료일 - 시작일 +1 )
ROUND(AVG(종료일 - 시작일 +1 ), 1)
-ROUND(AVG(종료일 - 시작일 +1 ), 1) 평균을 내고 7 이상인 데이터 필터링
SELECT CAR_ID
, ROUND(AVG(END_DATE - START_DATE + 1), 1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING ROUND(AVG(END_DATE - START_DATE + 1), 1) >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
다시 카테고리 별 상품 개수 구하기
/*
TODO
카테고리 코드 그룹바이 앞 두자리 자르기
상품카테고리 ASC
*/
SELECT SUBSTR(PRODUCT_CODE, 0, 2) AS CATEGORY, COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY SUBSTR(PRODUCT_CODE, 0, 2)
ORDER BY CATEGORY ASC;
문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/131529
조건에 맞는 사용자 정보 조회하기 (서브쿼리)
문자열 합치기 ||
길이 -> 오라클에서는 LENGTH()
SELECT USER_ID, NICKNAME, (CITY || ' ' || STREET_ADDRESS1 || ' ' || STREET_ADDRESS2) AS 전체주소,
CASE WHEN LENGTH(TLNO) = 11 THEN SUBSTR(TLNO, 0, 3) ||'-'|| SUBSTR(TLNO, 4, 4) ||'-'|| SUBSTR(TLNO, 8, 4)
END AS 전화번호
FROM USED_GOODS_USER
WHERE USER_ID IN (
SELECT U.USER_ID
FROM USED_GOODS_BOARD B INNER JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
GROUP BY U.USER_ID
HAVING COUNT(*) >= 3 )
ORDER BY USER_ID DESC ;
'프로그래머스 > SQL' 카테고리의 다른 글
GROUP BY 유형 모음 [프로그래머스].ORACLE (SQL 고득점 키트) (1) | 2023.10.21 |
---|---|
ORACLE 코테 준비 정리 (1) | 2023.10.21 |
오라클 JOIN 정리 (1) | 2023.10.19 |
JOIN 유형 모음 [프로그래머스].oracle (SQL 고득점 키트) (1) | 2023.10.19 |
IS NULL 유형 모음 [프로그래머스] .ORACLE (SQL 고득점 키트) (0) | 2023.10.18 |