*프로그래머스 SQL 문제 풀이입니다.
SELECT A.TITLE, A.BOARD_ID, B.REPLY_ID, B.WRITER_ID, B.CONTENTS, DATE_FORMAT(B.CREATED_DATE, '%Y-%m-%d')
FROM USED_GOODS_BOARD A, USED_GOODS_REPLY B
WHERE A.BOARD_ID = B.BOARD_ID
AND A.CREATED_DATE BETWEEN '2022-10-01' AND '2022-10-31'
ORDER BY B.CREATED_DATE, A.TITLE;
| 구분기호 | 역할 |
|---|---|
| %Y | 4자리 년도 |
| %y | 2자리 년도 |
| %M | 긴 월(영문) |
| %b | 짧은 월(영문) |
| %W | 긴 요일 이름(영문) |
| %a | 짧은 요일 이름(영문) |
| %i | 분 |
| %T | hh:mm:SS |
| %m | 숫자 월(01, 02, 10, ...) |
| %c | 숫자 월(1, 2, 10, ...) |
| %d | 일(01, 02, 10, ...) |
| %e | 일(1, 2, 10, ...) |
| %l | 시간(12h) |
| %H | 시간(24h) |
| %r | hh:mm:ss AM, PM |
| %S | 초 |
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID, PRODUCT_ID DESC ;
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') SALES_DATE,
PRODUCT_ID,
USER_ID,
SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE BETWEEN '2022-03-01' AND '2022-03-31'
UNION ALL
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') SALES_DATE,
PRODUCT_ID,
NULL AS USER_ID,
SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE BETWEEN '2022-03-01' AND '2022-03-31'
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID;
해당 column의 값이 NULL 반환 시, 다른 값으로 출력
SELECT IFNULL(column 이름, 'Null일 경우 대체할 값') FROM 테이블명;
SELECT IF(IS NULL(column 이름), "null일 경우 대체할 값, column 이름)
FROM column 이름
해당 column 값을 조건식을 통해 판단 후, 조건에 맞게 값 변환
CASE
WHEN 조건식1 THEN 식1
WHEN 조건식2 THEN 식2
...
ELSE 조건에 맞는 경우가 없는 경우 실행
END
지정한 표현식들 중에 NULL이 아닌 첫 번째 값을 반환
!모든 DBMS 사용 가능