SQL

프로그래머스_SELECT_조건에 맞는 회원수 구하기(MySQL)

Wally's 2023. 11. 10. 15:41

문제 설명 이미지 [ 출처 : Programmers ]
문제 이미지 [ 출처 : Programmers ]
예시 이미지 [ 출처 : Programmers ]

문제 풀이 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세 이하인 사용자의 수를 세는 방법도 있다.

 

 

 

*위 내용 오타 및 수정해야 하는 내용 있으면 댓글로 알려주시면 감사합니다.