본문 바로가기

MySql

[내일 배움 캠프, SQL 달리기 반] Lv1. 데이터 속 김서방 찾기

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)도 함께 넣어주어 전체와 비교하는 것이 좋아보인다.