SQL 연습 문제 - Lv1. 데이터 속 김서방 찾기

이희수·2024년 12월 18일
  • 데이터 설명
    • user 테이블은 스파르타 코딩클럽에 가입한 유저들의 정보를 날짜별로 기록한 테이블입니다.
      • user_id: 익명화된 유저들의 아이디(varchar255)

      • created_at: 아이디 생성 날짜(timestamp)

      • updated_at: 정보 업데이트 날짜(timestamp)

      • name: 익명화된 유저들의 이름(varchar255)

      • email: 이메일(varchar255)

  • 문제: 다음과 같은 결과테이블을 만들어봅시다.
    • name_cnt: “김”씨 성을 가지고 있는 교육생의 수

내가 작성한 쿼리 :

SELECT count(name) name_cnt
FROM users u 
where name like '김%'

정답 :

SELECT count(DISTINCT(user_id)) name_cnt
from users u 
where SUBSTR(name,1,1)='김' 

내가 작성한 쿼리와 정답의 결과가 같긴 하지만, count(distinct(user_id)) 로 작성해야 할 필요가 있는 것 같다.

테이블 내에 중복된 회원 정보가 존재할 가능성이 있기에, 중복 없이 회원 수를 카운트 하기 위해 distinct(user_id)를 사용해주어야 한다.

where절에서 김씨 성을 가진 이름을 조건으로 작성할 때엔, 내가 사용한 like '김%' 방식과 정답의 substr()방식 모두 동일한 결과를 가져온다.

0개의 댓글