프로그래머스 MySQL 기준 풀이
SELECT
다른 문제 풀이는 아래에
12세 이하인 여자 환자 목록 출력하기
NULL값 처리: NVL기능을 하는 IFNULL(컬럼, 'null값을 대체할 값')
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO,'NONE') TLNO
FROM patient
WHERE age <= 12
AND GEND_CD = 'W'
order by age desc, PT_NAME asc
흉부외과 또는 일반외과 의사 목록 출력하기
Date_format(날짜, '%형식')
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC
조건에 맞는 회원수 구하기
YEAR(), MONTH(), DAY() 함수 사용하기
SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE AGE >= 20
AND AGE <= 29
AND YEAR(JOINED) = 2021
재구매가 일어난 상품과 회원 리스트 구하기
SELECT user_id, product_id
FROM online_sale
GROUP BY user_id, product_id
HAVING count(product_id) >=2
ORDER BY user_id asc, product_id desc
-- 간단 버전
SELECT user_id, product_id
FROM online_sale
GROUP BY 1, 2
HAVING count(product_id) >=2
ORDER BY 1, 2 desc
오프라인/온라인 판매 데이터 통합하기 (lv.4)
복잡했던 문제!!
UNION을 이용해서 온라인/오프라인 데이터를 위아래로 붙여서 가져오기
오프라인 데이터엔 user_id가 없으므로 NULL 값으로 채움 (NULL as user_id)
이때 "NULL"이라고 따옴표를 쓰면 오답이 되기 때문에 주의할 것!!
2022년 3월의 데이터만 가져오기
날짜 형식을 date_format으로 맞춰주었고, 풀이에는 BETWEEN을 사용 (시간 까지 쓰는 것 주의하기)
WHERE YEAR(sales_date) = 2022 AND MONTH(sales_date)=3 도 가능!
SELECT date_format(sales_date,"%Y-%m-%d") as SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM online_sale
where sales_date BETWEEN '2022-03-01 00:00:00' AND '2022-03-31 23:59:59'
UNION
SELECT date_format(sales_date,"%Y-%m-%d") as sales_date, product_id, NULL as user_id, sales_amount
FROM offline_sale
where sales_date BETWEEN '2022-03-01 00:00:00' AND '2022-03-31 23:59:59'
order by sales_date, product_id, user_id