TIL/사전캠프 퀘스트

TIL 2024-09-20(SQL_달리기반 1.)

myoma 2024. 9. 20. 16:57

Lv1. 데이터 속 김서방 찾기

  • 상황 : 여러분들은 스파르타코딩클럽의 분석가로 취직했습니다. DBeaver를 테스트 해볼 겸 "김"씨로 시작하는 이용자들 수를 세어 보기로 했습니다.
  • 데이터 설명.
    • user 테이블은 스파르타 코딩클럽에 가입한 유저들의 정보를 날짜별로 기록한 테이블 입니다.
      • user_id : 익명화된 유저들의 아이디(varchar255)
      • created_at : 아이디 생성 날짜(timestamp)
      • updated_at : 정보 업데이트 날짜(timestamp)
      • name : 익명화된 유저들의 이름(varchar255)
      • email : 이메일(varchar255)
  • 문제 : 다음과 같은 결과테이블을 만들어봅시다.
    • name_cnt : "김"씨 성을 가지고 있는 교육생 수

결과 테이블

SELECT COUNT(DISTINCT(customer_id)) name_cnt
FROM user
WHERE SUBSTR(name,1,1) = '김'

"김"씨 성을 가져오는 방법은 LIKE도 있지만 substr을 이용하는 방법도 있다.

  • substring(substr) : substr(가져올 컬럼, 몇번째 글자부터 가져올 것 인지, 몇 글자를 가져올 것 인지)

우리는 이름(name)에서 첫번째 글자부터 한글자만 가져오면 되기에 1, 1을 적어주었다.

그리고 그 글자가 "김" 일 때만 가져오도록 조건문(WHERE)에 적어준다.

 

여기서 바로 COUNT(customer_id) name_cnt 를 해도 되지만

혹시 중복 가입된 사람이 있을수도 있기에 DISTINCT 사용해준다.

  • DISTINCT : 중복데이터 제거

아직 LV.1 문제라 어렵지 않았고 문제를 다 풀고 정답을 확인하는데 테이블명이 'users' 로 되어있는 것 말고는 모두 똑같아서 은근 뿌듯했다..ㅎ

 

답은 users라고 적혀있지만 문제 데이터 설명에선 user 테이블이라고 설명했기에 user라고 적어도 큰 문제는 되지 않을 것 같다.