조건에 맞는 도서 리스트 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/144853
SELECT BOOK_ID, TO_CHAR(PUBLISHED_DATE,'YYYY-MM-DD') AS PUBLISHED_DATE
FROM BOOK
WHERE TO_CHAR(PUBLISHED_DATE,'YYYY') = '2021'
AND CATEGORY ='인문'
ORDER BY PUBLISHED_DATE
- date format을 다루는 것이 핵심인 듯한 문제
- select 할때도 날짜를 to_char로 변환해서 조회해야 한다
- 컬럼명도 as published_date로 다시 설정해주기
12세 이하인 여자 환자 목록 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/132201
SELECT PT_NAME, PT_NO, GEND_CD, AGE, NVL(TLNO, 'NONE') TLNO
FROM PATIENT
WHERE GEND_CD = 'W'
AND AGE <=12
ORDER BY AGE DESC, PT_NAME ;
- NVL을 사용하는 것이 핵심인 문제
NVL("값", "지정값")
- 값이 NULL인 경우 지정값 출력, NOT NULL인 경우 원래 값 출력
NVL2("값", "지정값1", "지정값2")
NVL2("값", "NOT NULL", "NULL")
- 값이 NOT NULL인 경우 지정값1 출력, NULL인 경우 지정값2 출력
- NVL, NVL2 사용 방법 예시
근데 난 홑따옴표(') 부분을 자꾸 쌍따옴표(")로 써서 오답이었다..
oracle에서는
홑따옴표 (') 는 문자열 감싸기
쌍따옴표(") 는 컬럼명 감싸기
오프라인/온라인 판매 데이터 통합하기
https://school.programmers.co.kr/learn/courses/30/lessons/131537
SELECT TO_CHAR(SALES_DATE,'YYYY-MM-DD') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM
(
(SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE 1=1
AND EXTRACT ( YEAR FROM SALES_DATE) = '2022'
AND EXTRACT ( MONTH FROM SALES_DATE) = '03' )
UNION ALL
(SELECT SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE 1=1
AND EXTRACT ( YEAR FROM SALES_DATE) = '2022'
AND EXTRACT ( MONTH FROM SALES_DATE) = '03' )
)
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
- 이것도 date format을 to_char로 변경해준다
- extract로 년, 월을 추출해주고 union all 해줌
- offline_sale과 online_sale을 union 했을때, offline_sale은 user_id가 없으므로 null처리를 해줌 (안하면 오류남)
- where 1=1 쓰는 이유 : 디버깅 편하게 하기 위해서
https://hyjykelly.tistory.com/5
- extract 설명
+ extract 함수의 결과 데이터 타입은 NUMBER임
https://statwith.tistory.com/464
'코딩테스트 > SQL' 카테고리의 다른 글
[프로그래머스 고득점 kit] - SELECT (oracle), IS NOT NULL, <> 연산자, LIKE "~%" (0) | 2024.01.17 |
---|