1. 문제
2. 풀이
- FROM → user 테이블
- WHERE → name LIKE "김%" ( "김"씨 성을 가져야 한다.)
- GROUP BY → X (그룹에 대한 조건이 없으므로)
- HAVING → X (그룹이 없으므로)
- SELECT → count(1) name_cnt
- ORDER BY → X (정렬에 대한 조건이 없으므로)
SELECT count(1) name_cnt
FROM user
WHERE name like "김%"
- 일반적으로 user_id는 중복되지 않기 때문에 COUNT(1)을 사용하여, 전체 테이블에서 김씨 성을 갖은 데이터를 카운트하였다.
3. 정답
SELECT count(distinct(user_id)) as name_cnt
FROM user
where substr(name,1,1) = '김'
- 혹시 모를 오류로 user_id가 중복되는 경우를 방지하고자 COUNT(distinct(user_id))로 처리를 해준 것 같다.
- 여기서 더 추가) 중복된 결과는 카운트가 되지 않으므로, 전체에서 몇개가 중복되었는지 구분하기 위해, COUNT(1)도 함께 넣어주어 전체와 비교하는 것이 좋아보인다.
'MySql' 카테고리의 다른 글
[내일 배움 캠프 4-5] JOIN이란? (0) | 2025.03.24 |
---|---|
[내일 배움 카드, 달리기 반] Lv2. 날짜 별 획득 포인트 조회하기 (0) | 2025.03.24 |
[내일 배움 카드 4-2] Subquery란? (0) | 2025.03.24 |
[내일 배움 캠프 3-7] Data Type 오류 + 3주차 숙제 (0) | 2025.03.24 |
[내일 배움 캠프 3-4] IF, CASE 조건 (0) | 2025.03.24 |