Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 조건에 맞는 회원수 구하기 (MySQL) 본문

DB/프로그래머스(MySQL)

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

luke-king 2024. 9. 22. 20:11

 

 

 

 

 

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131535

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

풀이.


 

SELECT COUNT(USER_ID) AS USERS FROM USER_INFO
WHERE JOINED < DATE_FORMAT('2022-01-01','%Y-%m-%d')
AND AGE BETWEEN 20 AND 29

 

이번 문제는 프로그래머스 MySQL "조건에 맞는 회원수 구하기" 문제다.

문제에서 날짜 비교를 하는데 크게 어려움 없다. 그럼 바로 풀이를 해보겠다.

 

1. 2021년도 가입자 중에 20 ~ 29세 인원들만 카운트하므로 COUNT(USER_ID)를 해준다. 다음으로 출력 컬럼명은 "USERS"로 해줘야 하기에 별칭을 사용해 준다.

(사실 지금 문제에서는 COUT(*)를 해줘도 무방하다.)

 

2. 조건 충족을 하기 위해 WHERE절을 사용해 JOINED의 연도가 2021년도 값들만 추출해야 하기에

2022-01-01 밑에 값들로 지정해 줬다.

(이렇게 해도 정답이긴 하지만 조금 더 정확 하게 하기 위해서는 밑에 다른 정답케이스를 통해 확인하면 좋다.)

 

3. 다음으로 AGE 조건절을 만족하려면 20 ~ 29세 들의 값들이기에 BETWEEN을 사용해서 조금 더 간결화 시켰다.

그럼 끝이다.

 

 

* 밑에 정답은 위의 연도 비교했을 때 조금 더 간결화 하고 보다 정확한 답이다.

SELECT COUNT(USER_ID) AS USERS FROM USER_INFO
WHERE JOINED LIKE '2021%'
AND AGE BETWEEN 20 AND 29

 

- LIKE 함수를 사용해 문자열 2021 포함되어 있는 값들을 충족시킨다.

처음 답인 DATE_FORMAT을 사용한 곳에서는 생각해 보면 2022-01-01 아래 값들을 출력하는데 만일 테이블 값에

2012년 20 ~ 29세의 값들이 있다면 그 값들까지 나오게 될 거다.