프로그래머스 SQL 고득점 Kit SELECT문 연습 문제 입니다.
상세 설명: https://school.programmers.co.kr/learn/courses/30/lessons/144853
기본 SELECT > FROM > WHERE에 ORDER BY가 추가된 문제이다. 일반적으로 SQL은 대소문자를 구분하지 않기 때문에 모두 대문자로, 모두 소문자로 작성하여도 되나,집계함수 및 연산자(like) 등을 소문자로 처리하였다.
SELECT BOOK_ID, date_format(PUBLISHED_DATE, "%Y-%m-%d") AS PUBLISHED_DATE
FROM BOOK
WHERE PUBLISHED_DATE like '2021%' AND CATEGORY like '인문'
ORDER BY PUBLISHED_DATE ASC;
포스팅 뒷부분 💡 like 연산자 에서 추가적으로 설명한다.포스팅 뒤부분 💡 date_format 에서 추가적으로 설명한다. like 연산자는 문자열의 패턴을 검색하는 데 사용된다.
기본적인 공식은 다음과 같다.
SELECT *
FROM TABLE
WHERE COLUMN like 'PATTERN';
이때, 패턴에서 활용되는 것이 %와 _이다. %는 모든 문자라는 의미이고, _는 한 글자라는 의미이다. 예시로 다음 패턴들을 활용해 보겠다.
SELECT *
FROM TABLE
WHERE COLUMN like '%2021%';
SELECT *
FROM TABLE
WHERE COLUMN like '_2021_';
SELECT *
FROM TABLE
WHERE COLUMN like '_2021%';
우리는 시작이 2021이기만 하면 되기 때문에 where문을 다음과 같이 코드를 작성할 수 있다. 그리고 category는 '인문', '과학' 처럼 정확히 문자열과 일치해야 하므로 다음과 같이 패턴에 사용되는 %, _없이 표현할 수 있다. AND는 앞 뒤의 모든 조건을 만족해야 한다는 의미이다.
WHERE COLUMN like '2021%' AND CATEGORY like '인문';
date_format(날짜, 형식)은 날짜를 지정한 형식으로 출력하게 한다. date_format에 사용되는 구분 기호를 다음과 같다.
우리는 원래 형태인 '2021-01-01'과 같인 4자리 년도-두자리 숫자 월-두자리 일로 표현하는 것이 목표이므로 '%Y-%m-%d'로 패턴을 지정해주면 된다. 따라서 다음과 같이 코드를 작성할 수 있다.
date_format(PUBLISHED_DATE, "%Y-%m-%d")