재구매가 일어난 상품과 회원 리스트 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/131536
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

-- 동일한 상품 재구매한 동일 회원 아이디와 상품 아이디 출력
-- 회원 아이디 기준 오름차순, 상품 아이디 내림차순
SELECT USER_ID,
PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID # 회원 아이디, 상품 아이디 그룹
HAVING COUNT(*)>1 # 카운트 2회 이상 조건
ORDER BY USER_ID, PRODUCT_ID DESC;
💡 HAVING COUNT(*)>1 # 카운트 2회 이상 조건
취소되지 않은 진료 예약 조회하기
https://school.programmers.co.kr/learn/courses/30/lessons/132204
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

-- 2022년 4월 13일
-- 취소되지 않은 cs 진료 예약 내역 조회
-- 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시
-- 진료예약일시 기준 정렬
SELECT a.APNT_NO,
p.PT_NAME,
p.PT_NO,
d.MCDP_CD,
d.DR_NAME,
a.APNT_YMD
FROM APPOINTMENT a
JOIN PATIENT p ON p.PT_NO = a.PT_NO
JOIN DOCTOR d ON d.DR_ID = a.MDDR_ID # 조인 두 번 가능
WHERE d.MCDP_CD = 'CS'
AND LEFT(APNT_YMD,10)='2022-04-13'
AND a.APNT_CNCL_YN = 'N'
ORDER BY a.APNT_YMD;
💡 조인 두 번 가능
자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기
https://school.programmers.co.kr/learn/courses/30/lessons/157340
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

-- 2022년 10월 16일 대여 '대여중' , '대여 가능' : AVAILABILITY
-- 자동차 아이디, AVAILABILITY 출력
-- 반납날짜가 2022년 10월 16일 인 경우에도 대여중
-- 자동차 아이디 기준 내림차순
SELECT
CAR_ID,
MAX(CASE WHEN START_DATE <='2022-10-16' AND END_DATE >='2022-10-16'
THEN '대여중' ELSE '대여 가능' END) AS AVAILABILITY
# MAX 함수 쓰인 이유
# 차 아이디 별로 그룹핑했는데 같은 차 중 하나라도 대여중이면 대여중으로 표기하기 위해
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
group by
CAR_ID
ORDER BY
CAR_ID DESC ;
💡 MAX 함수 쓰인 이유
: 차 아이디 별로 그룹핑했는데 같은 차 중 하나라도 대여중이면 대여중으로 표기하기 위해
💡 MAX 함수 문자열도 가능
자동차 대여 기록에서 장기/단기 대여 구분하기
https://school.programmers.co.kr/learn/courses/30/lessons/151138
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

-- 대여시작일 2022년 9월
-- 대여 기간 30일 이상 '장기 대여', 아니면 '단기 대여'
-- 대여 기록 아이디를 기준 내림차순
SELECT HISTORY_ID,
CAR_ID,
DATE_FORMAT(START_DATE,'%Y-%m-%d') START_DATE,
DATE_FORMAT(END_DATE,'%Y-%m-%d') END_DATE,
IF(DATEDIFF(END_DATE,START_DATE)+1>=30,'장기 대여', '단기 대여') RENT_TYPE
# 대여하고 바로 반남해도 1일로 취금하니까 +1 해야함
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(START_DATE,'%Y-%m-%d') LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;
💡 대여하고 바로 반납해도 1일로 취금하니까 +1 해야함
우유와 요거트가 담긴 장바구니
https://school.programmers.co.kr/learn/courses/30/lessons/62284
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

-- 우유와 요거트 동시에 구입한 장바구니
-- 장바구니 아이디순
SELECT
CART_ID
FROM
CART_PRODUCTS
GROUP BY
CART_ID
HAVING GROUP_CONCAT(NAME) LIKE '%Milk%'
AND GROUP_CONCAT(NAME) LIKE '%Yogurt%' ;
💡 GROUP BY CART_ID : 카트 아이디별로 그룹화
💡 HAVING GROUP_CONCAT(NAME) : 카트 아이디에 있는 상품 종류 하나의 열로 나열
'SQL > 문제' 카테고리의 다른 글
| SQL | 상품을 구매한 회원 비율 구하기 (0) | 2025.01.05 |
|---|---|
| SQL | 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기, 오프라인/온라인 판매 데이터 통합하기, 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (1) | 2025.01.05 |
| SQL | 동명 동물 수 찾기, NULL 처리하기 (0) | 2025.01.03 |
| SQL 과제 (1) | 2025.01.02 |
| SQL | 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2025.01.02 |