SQL 세션 2회차 PDF 파일
1. SQL 집계합수: COUNT, MAX, MIN, SUM, AVG
집계함수는 전체 데이터를 대상으로 사용하거나, 특정 컬럼을 기준으로 사용할 수 있어요.
집계함수는 SELECT 문에서 사용되며, 종류는 총 5가지로 각각의 특징은 아래와 같아요.
⬆️집계함수의 종류
여러 집계함수 동시에 사용 가능
select count(*)as cnt
, avg(나이)as avg_age
, max(나이)as max_age
, min(나이)as min_age
, sum(나이)as sum_age
from basic2.theglory

2. SQL 그룹화: GROUP BY와 HAVING
GROUP BY절은 앞에서 배운 집계함수에 그룹(기준)이 더해진 개념
특정 컬럼을 기준으로 데이터를 요약해서 비교하고 싶을 때 주로 사용해
작성 방법
1. SELECT 뒤 기준컬럼(나라, 성별, 레벨..등등) 작성
2. 집계함수(COUNT, MAX, MIN, AVG, SUM) 작성
3.WHERE 절 뒤 GROUP BY 기준컬럼 작성 (WHERE 절은 생략 가능합니다.)
3번 작성 안할시 에러 남
ex:

But
select count(DISTINCT game_actor_id)
from basic.users u

값이 하나
select `level`
from basic.users u

결과 여러개
둘이 숫자가 안 맞아서 에러 남
그래서 에러 안 나오게 하려고 'Group by' 써야 함
So:
select `level`,count(DISTINCT game_actor_id)
from basic.users u
group by `level`
(집계 함수를 뺀 나머지는 GROUP BY)
⭐️FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY
-Having
Having절은 Group By에 의한 결과를 필터링 할 때 사용됩니다(조건문)
나이가 31세 이상이고, 성별을 기준으로 평균 나이를 구하고, 평균 나이가 41초과인 경우
Code:
select 성별, avg(나이)as avg_age
from basic2.theglory
where 나이>=31
group by 성별
having AVG_AGE>41
3. SUB QUERY
-컬럼들을 활용한 많은 연산(사칙, 집계, 윈도우 함수, 포맷팅)을 하는 경우, SUB QUERY 는 이를 순차적(구조적)으로 기록하는 역할
Sub query 모양(여러 sub query가 존재)
보라색 괄호 처리 후 노란색 괄호를 처리(총 3개의 subquery)
sub query의 종류
1. 중첩(일반) 서브쿼리(잘 안 쓴다)
-where절 뒤에 사용 됨
예시:
select *
from basic2.theglory where 나이 > (select 나이 from basic.theglory where 이름='문동은')
뜻: 문동은 나이보다 나이가 더 많은 친구들의 데이터를 다 가져와라
위에 코드는
select *
from basic2.theglory
where 나이>40
이랑 같음
2. 스칼라 서브쿼리
-테이블이 2개여야 함
select 이름, , 나이 , (select count(*) from theglory2 where theglory2.이름=theglory.이름) as same_name_cnt ,
(select sum(결제금액) from theglory2 where theglory2.이름=theglory.이름)as same_name_sumamount
from basic.theglory ;
where절 없음
3. 인라인 뷰(많이 사용 됨)
ex:
# 인라인뷰 서브쿼리 실습
# 나이가 33세 이상인 모든 데이터 중 나이와 직업 컬럼 반환하기
select x.나이, x.직업
from( select * from basic.theglory where 나이>=33 )as x
괄호안을 연산한뒤 그 다음에 괄호 안에 있는 것들을 x라는 테이블로 저장
그 다음 바깥으로 나와서 저장
x라고 잠깐 저장뒤 그 뒤의 것들이랑 연산
괄호 안에 있는 것부터 연산
'SQL 강의 정리' 카테고리의 다른 글
SQL 세션 5회차 (1) | 2024.10.17 |
---|---|
SQL 4회자 세션 정리 (0) | 2024.10.16 |
SQL 세션 2회차 (0) | 2024.10.14 |