USER_INFO 테이블은 의류 쇼핑몰에 가입한 회원 정보를 담고 있으며, 각 컬럼은 다음을 의미합니다:
| Column name | Type | Nullable | 설명 |
|---|---|---|---|
| USER_ID | INTEGER | FALSE | 회원 ID |
| GENDER | TINYINT(1) | TRUE | 성별 (0: 남자, 1: 여자, NULL: 미입력) |
| AGE | INTEGER | TRUE | 나이 (NULL 가능) |
| JOINED | DATE | FALSE | 가입일 |
2021년에 가입한 회원 중,
나이가 20세 이상 29세 이하인 회원의 수를 구하는 SQL을 작성하시오.
| USER_ID | GENDER | AGE | JOINED |
|---|---|---|---|
| 1 | 1 | 26 | 2021-10-05 |
| 2 | 0 | NULL | 2021-11-25 |
| 3 | 1 | 22 | 2021-11-30 |
| 4 | 0 | 31 | 2021-12-03 |
| 5 | 0 | 28 | 2021-12-16 |
| 6 | 1 | 24 | 2022-01-03 |
| 7 | 1 | NULL | 2022-01-09 |
→ 조건에 맞는 회원은 USER_ID = 1, 3, 5
→ 결과: 3명
SELECT COUNT(*) AS USERS
FROM user_info
WHERE YEAR(joined) = 2021
AND age BETWEEN 20 AND 29;
YEAR() 함수YEAR('2021-10-05') → 2021-- 잘못된 예시
WHERE DATE_FORMAT(joined, '%y') = '2021'
-- '%y'는 2자리 연도 → '21'과 '2021'은 다르므로 조건 불일치
날짜 관련 함수 :
BETWEEN 20 AND 29BETWEEN은 양 끝 포함BETWEEN 20 AND 30으로 쓰면 30세도 포함되므로 틀림