SQL

실습 | EDA / 특정 문자 필터링 / 날짜별 평균 값 구하기

성장하는 쿠키의 로그 기록 2024. 11. 15. 17:17

1. SQL 실전 문제풀이 ( Lv1. 데이터 속 김서방 찾기 )

- 문제 :  '김'씨 성을 가진 유저 수 구하기

더보기

TABLE

  : user 테이블은 스파르타 코딩클럽에 가입한 유저들의 정보를 날짜별로 기록한 테이블.

  • user_id: 익명화된 유저들의 아이디(varchar255)
  • created_at: 아이디 생성 날짜(timestamp)
  • updated_at: 정보 업데이트 날짜(timestamp)
  • name: 익명화된 유저들의 이름(varchar255)
  • email: 이메일(varchar255)

- 풀이 과정 (EDA & 문제 풀이)

더보기

1. EDA  

  • user 테이블 전체 null 행/값 허용 하지 않음 (즉, 모든 컬럼의 정보를 입력해야 가입 완료)
  • user_id 컬럼이 PK,  중복없이 id 부여 됨. 
  •  user_id 와 email은 1:1 관계 (유저당 이메일 1개 기재 ) → id별 email 수 카운팅 했을때 2개 이상인 출력 값 없음.

2. 문제풀이

  1. name 컬럼에서 '김'씨 성을 가진 유저 필터링 → 특정 문자가 포함된 문자열 추출 함수 LIKE 사용) 
  2. user_id 나 전체 행 갯수 카운팅 COUNT DISTINCT 함수  활용

🔥DEVELOP🔥

더보기

- 특정 문자열 추출 함수 SUBSTR 으로도 문제 풀이 가능 → 첫 글자가 '김' 일때 필터링

SELECT name
	   ,COUNT(DISTINCT user_id ) AS name_cnt
FROM users
WHERE SUBSTR(name,1,1)='김'

2. SQL 실전 문제풀이 ( Lv2. 날짜별 획득포인트 조회하기 )

- 문제 :  날짜별 평균 포인트 값 조회 (평균값은 정수로 반올림)

더보기

TABLE

  : point_users 테이블은 스파르타코딩클럽 가입 유저들의 포인트에 대한 정보를 기록한 테이블.

- 풀이 과정 (EDA & 문제 풀이)

더보기

1. 간단 EDA  

  • 평균 값 조회 이므로 point 컬럼의 null 값 여부 확인 해보자 → 테이블 전체에 null 값 없음, 특이사항 없이 avg 함수 사용해도 됨

2. 문제풀이

  1. created_at 컬럼 날짜 형식 변경 ( 일자 까지 ) → DATE or DATE_FORMAT 함수 활용
  2. 날짜별 평균 값 조회 → 위에 날짜 형 변환 함수 그룹바이 & 평균 값 조회
  3. 평균값 정수형으로 반올림   ROUND 함수 활용