TIL(24.04.23.)

codataffee·2024년 4월 23일

TIL

목록 보기
15/135
post-thumbnail

#INTRO

아침운동 클리어 : )

JUST DO IT.


#코드카타 (09:00 ~ 12:00)


#데이터와 친해지는 SQL (세션 2회차) (14:00 ~ 15:00)

  • 1회차 리뷰 中
    1. 예약어를 칼럼명으로 사용하고 싶을 때 백틱( ` )을 활용하여 사용 가능
    2. (!= 1), (not in (1)) : 둘 다 '1이 아닌' 이라는 '같지 않다.' 연산자로 사용 가능

  • 집계 함수: 여러 행 또는 열로부터 하나의 결과값을 반환

    1. 전체 데이터를 대상으로 사용하거나, 특정 컬럼을 기준으로 사용 가능

    2. 특히, 특정 컬럼을 기준으로 집계 함수를 사용할 경우, GROUP BY 절을 반드시 사용!

    3. 집계 함수는 SELECT 문에서 사용, 종류는 총 5가지


      +) MIN, MAX 함수는 숫자 형식 뿐 아니라, 날짜 형식에도 사용 가능.

    4. 각 집계 함수 사용 (예)

      #1. 전체 데이터 갯수 세기
      select count(*)as cnt 
      from 테이블 
      #2. 전체 데이터 평균 나이 구하기
      select avg(나이)as avg_age 
      from 테이블
      #3. 전체 데이터 최대 나이 구하기
      select max(나이)as max_age 
      from 테이블 
      #4. 전체 데이터 최소 나이 구하기
      select min(나이)as min_age 
      from 테이블 
      #5. 전체 데이터 나이합계 구하기
      select sum(나이)as sum_age 
      from 테이블 
      #6. 여러 집계함수의 동시사용
      select count(*)as cnt,
           avg(나이)as avg_age, 
           max(나이)as max_age,
           min(나이)as min_age,
           sum(나이)as sum_age,
      from 테이블

  • GROUP BY: 집계 함수에 그룹(기준)이 더해진 개념
    특정 컬럼을 기준으로 데이터를 요약해서 비교하고 싶을 때 주로 사용

    1. 작성 방법
      1) SELECT기준컬럼 작성
      2) 집계 함수 작성
      3) WHERE절 뒤 GROUP BY 기준컬럼 작성 (WHERE 절 생략 가능)

      • ⚠️주의⚠️: 1), 2) 작성 후, 3)을 작성하지 않으면 에러 발생
        데이터를 SELECT할 때, 집계함수는 여러 데이터로부터 하나의 행을 반환하지만,
        1) 기준컬럼은 N개의 값을 반환하기 때문에!
        3) GROUP BY 절을 사용해서 기준컬럼 당 값 1개를 반환할수 있도록 명시해야 함.
      • SQL 작동순서

        FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY


  • HAVING: GROUP BY에 의한 결과를 필터링할 때 사용
    GROUP BY 절 뒤에 위치하며 WHERE 절과는 GROUP BY 전, 후로 데이터 필터링한다는 차이점.


  • SUB QUERY: 복잡한 연산 시, 최종 결과를 반환하기 위한 중간 테이블의 역할

    1. 사용 이유:
      N번의 쿼리문 실행을 1번의 쿼리문으로 실행하여
      쿼리의 결과값을 가지고 추가 연산을 하기 위해

    2. 실행 순서:
      서브쿼리 실행(안쪽에 위치한 쿼리) > 메인쿼리 실행(바깥쪽에 위치한 쿼리)
      쿼리의 가장 안쪽부터, 바깥쪽 쿼리를 실행하며 최종 결과값을 반환

    3. 특징:
      () 안에 SELECT, FROM 을 반드시 명시
      쿼리 마지막에 ; 기호 사용 불가
      ORDER BY 절 사용 불가

    4. 종류:
      1) 중첩(일반) 서브쿼리: WHERE 절에서 사용

      2) 스칼라 서브쿼리: SELECT 절에서 사용, 하나의 컬럼처럼 사용, 서로 다른 테이블 필요

      3) 인라인 뷰 (가장 많이 사용):
      FROM 절에서 사용, 하나의 테이블처럼 사용, AS 구문을 사용하여 명칭 반드시 기재!


#세션 문제풀이 (15:00 ~ 18:00)

✔️ 문제 #1: GROUP BY 절을 사용하여, 특정 데이터값 추출

✔️ 작성 쿼리

select serverno ,
       count(distinct game_actor_id) cnt_id,
       avg(`exp`) avg_exp
from basic.users
group by serverno 
order by serverno 
;

✔️ 실행 결과


✔️ 문제 #2: GROUP BY 와 HAVING 절을 사용하여, 특정 데이터값 추출

✔️ 작성 쿼리

select `date` ,
        count(distinct game_actor_id) cnt_id
from basic.users
group by `date` 
having count(distinct game_actor_id) > 10
order by 1 desc
;

✔️ 실행 결과


✔️ 문제 #3: SUB QUERY 사용하여, 특정 데이터값 추출

✔️ 작성 쿼리

select a.`date`,
       a.cnt_id
from
	(
	select `date`,
	        count(distinct game_actor_id) cnt_id
	from basic.users
	group by `date`
	) a
where a.cnt_id > 10
order by 1 desc
;

✔️ 실행 결과


✔️ 참고
1. DBeaver Public Key Retrieval is not allowed 에러 해결방법




#파이썬 기초 학습 (19:00 ~ 21:00)


+) 방과 후 학습 (21:00 ~ 22:00)

  • SQL 세션 과제 쿼리 리뷰
  • 데이터 분석가로서의 목표 공유

#OUTRO

오늘의 한 줄.

오늘 하루도 알차게, 잘 보냈다!

profile
커피 좋아하는 데이터 꿈나무

0개의 댓글