SQL 고득점 Kit - SELECT 문제


✔️ 문제 설명

다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블입니다.
USER_INFO 테이블은 아래와 같은 구조로 되어있으며 USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다.

Column name Type Nullable
USER_ID INTEGER FALSE
GENDER TINYINT(1) TRUE
AGE INTEGER TRUE
JOINED DATE FALSE

GENDER 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다.

문제

USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요.
👉 문제 보러가기


✔️ 문제 풀이

(1) Pseudo-Code

1. USER_INFO 테이블을 가져온다.
2. 가입일자가 2021년도인 데이터를 가져온다. (WHERE)
3. 나이가 20세 이상 29세 이하 데이터를 가져온다. (WHERE, BETWEEN)
4. 데이터 개수를 출력하기 위해 COUNT(*)를 사용한다.

(2) 코드 작성

SELECT COUNT(*)
FROM USER_INFO
WHERE DATE_FORMAT(JOINED, '%Y') = '2021'
      AND AGE BETWEEN 20 AND 29 

(3) 코드 리뷰 및 회고

  • BETWEEN 은 이상, 이하를 나타내는 것을 기억하자.
  • COUNT 함수를 사용할 때, 결측치가 있는 컬럼을 넣으면 결측값을 제외한 행의 개수를 출력한다는 점을 기억하자.
  • COUNT(*)를 사용하면 결측값이 있어도 행 전체가 NULL이 아닌 이상 전체 행의 개수를 출력한다.
  • LGTM :)


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기