문제 풀이 1 :
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE JOINED LIKE '2021%' AND AGE BETWEEN 20 AND 29
- JOINED LIKE '2021%' : '2021'로 시작하는 레코드를 필터링한다. '%' 기호는 2021년의 어느 시점에 가입했는지에 상관없이 모든 2021년도 가입자를 포함시키는 와일드카드 역할을 한다.
- AGE BETWEEN 20 AND 29 : 20세 이상 29세 이하인 레코드를 선택한다.
문제 풀이 2 :
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE YEAR(JOINED) = '2021' AND AGE BETWEEN 20 AND 29
- YEAR(JOINED) = '2021' : JOINED 필드에서 연도 부분만을 추출하여 2021년에 해당하는 레코드를 필터링한다. YEAR 함수는 날짜 필드에서 연도 부분만을 반환한다.
문제 풀이 3 :
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE JOINED >= '2021-01-01' AND JOINED <= '2021-12-31' AND AGE BETWEEN 20 AND 29;
- JOINED >= '2021-01-01' AND JOINED <= '2021-12-31' : JOINED 필드가 2021년 1월 1일 이후이며 2021년 12월 31일 이전 또는 그 날짜에 해당하는 레코드를 선택한다.
문제 풀이 4 :
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE EXTRACT(YEAR FROM JOINED) = 2021 AND AGE BETWEEN 20 AND 29;
- EXTRACT 함수를 사용하여 JOINED 날짜에서 연도 부분을 추출한다.
문제 풀이 5 :
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE DATE_FORMAT(JOINED, '%Y') = '2021' AND AGE BETWEEN 20 AND 29;
- DATE_FORMAT 함수를 사용하여 날짜 데이터를 특정 형식의 문자열로 변환한다.
문제 풀이 6 :
SELECT COUNT(USER_ID) AS USERS
FROM (
SELECT USER_ID, AGE
FROM USER_INFO
WHERE YEAR(JOINED) = 2021
) AS SubQuery
WHERE AGE BETWEEN 20 AND 29;
- 서브쿼리를 사용하여 2021년에 가입한 사용자들의 목록을 먼저 생성한 다음, 그 결과에서 나이가 20세 이상 29세 이하인 사용자의 수를 세는 방법도 있다.
*위 내용 오타 및 수정해야 하는 내용 있으면 댓글로 알려주시면 감사합니다.
'SQL' 카테고리의 다른 글
프로그래머스_SELECT_아픈 동물 찾기(MySQL) (0) | 2023.11.27 |
---|---|
프로그래머스_SELECT_어린 동물 찾기(MySQL) (0) | 2023.11.10 |
프로그래머스_SELECT_동물의 아이디와 이름(MySQL) (0) | 2023.11.10 |
프로그래머스_SELECT_여러 기준으로 정렬하기(MySQL) (0) | 2023.11.10 |
프로그래머스_SELECT_상수n개 레코드(MySQL) (0) | 2023.11.10 |