CODING TEST/MySQL
Lv1 - 조건에 맞는 회원수 구하기
iamyuunzo
2025. 7. 15. 21:42
📌 문제 정보
- 문제 이름 : 프로그래머스 - (SELECT) 조건에 맞는 회원수 구하기
- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131535
📌 문제 요약
- USER_INFO 테이블 : USER_ID(회원 ID), GENDER(성별 - 여 1, 남0), AGE(나이), JOINED(가입일)
- USER_INFO 테이블에서 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인 회원들
| USERS |
| 3 |
📌 내 풀이 및 코드
SELECT COUNT(*) # 몇 명?
FROM USER_INFO # USER_INFO 테이블에서
WHERE YEAR(JOINED) = 2021 # 2021년에 가입한 회원 중
AND AGE >= 20 # 나이가 20세 이상
AND AGE <=29 # 나이가 29세 이하
AND AGE IS NOT NULL;
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
** COUNT(*) **
- 조건 이 붙으면 조건을 만족하는 행의 개수를 셈.
- * : 모든 컬럼을 의미 (NULL 여부에 관계 없이 셈)
** IS NOT NULL을 왜 써야하는지? **
- 의미 : 값이 비어있지 않은 것만 고르기. (값이 들어 있는 것만 골라줘!)
- SQL 엔진이 알아서 NULL은 조건문에서 제외하지만, 협업이나 유지보수 생각할 때 의도를 명확히 하기 위해 넣는걸 추천