SQL 강의 정리

SQL 세션 3회차 정리

jaman 2024. 10. 15. 16:44

예제로 익히는 SQL - 3회차.pdf
2.93MB

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