Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

forDevLife

[SQL] 기초 연습 - JOIN 본문

Database

[SQL] 기초 연습 - JOIN

JH_Lucid 2021. 8. 18. 20:43

https://sqlzoo.net/wiki/Music_Tutorial

 

Music Tutorial - SQLZOO

The Music database This tutorial introduces the notion of a join. The music has two tables: album and track. album(asin, title, artist, price, release, label, rank) track(album, dsk, posn, song) More details about about the database How to do joins. The ph

sqlzoo.net

 

GROUP BY -> COUNT, MIN, MAX등을 쓰려면 필요하며, GROUP BY 단독으로는 쓰일 수 있다.

COUNT(*)로 해도 동일한 결과이다. GROUP BY title로 묶으면, 같은 title인 것들끼리 묶어서 수를 세어주는것 같다.

<COUNT도 혼자 쓰일 수는 있음>

 

 

song을 고를 때 꼭 'song'이 album(JOIN의 왼쪽)에 있지 않아도 찾아진다.

 

 

DISTINCT를 통해 중복 제거 가능하다. album 이름과 artist 이름이 동일한 것을 찾는다.

 

 

HAVING COUNT는 group by와 함께 쓰이며, 집계함수를 가지고 비교할 때 사용된다. (WHERE에서는 집계함수 사용 불가)

song으로 그룹을 묶고 album을 겹치는 것 없이 counting 할 수 있다. 

이렇게 함으로써 아래 3개 처럼 같은 앨범 내에 같은 이름을 가진 song이 한번만 count 되도록 거를 수 있다.

 

 

 


- SUM and COUNT

 

COUNT(*)로 들어오는 행의 수를 계산할 수 있다. 여기에는 어떤 value를 전달해도 상관 없이 동일한 결과가 나온다.

이때는 COUNT 한 행만 나오지만, 'SELECT continent, COUNT()'와 같이 continent 등과 함께 조회되면, GROUP BY를 통해 continent마다 한 행씩 나와야 한다. 이때는 꼭 GROUP BY를 작성해줘야 한다.

 

 

 

WHERE를 통해 'name'과 일치하는 행이 찾아지고, 해당 행의 population을 찾아 sum을 계산한다.

 

 

 

 

 

continent로 group by되어, 각 행이 계산되어 결과가 나온다. COUNT(*)로 해도 동일 결과 나온다.

 

HAVING은 GROUP BY 다음에 집계 후의 행을 필터링 한다.

여기에서는 SELECT로 조회하는 SUM()을 대상으로 비교한다.

 

 

앞서 배운거 적용. 

 

 

WHERE는 GROUPING(집계) 전에 실행된다. 인구가 10million 이상인 행을 뽑아놓고, continent로 group화 하면 된다.

그룹화 한걸 표현 할 COUNT, SUM 등이 2번째 열로 와야 한다.

 

 

continent로 먼저 그룹화를 하고, 그 그룹을 대상으로 SUM을 진행해서 필터링 할 수 있다.

대륙마다 전체 합을 구하고, 100million 이상인 대륙만 출력하는 SQL이다.

'Database' 카테고리의 다른 글

MySQL 설정 파일  (0) 2022.05.05
[Redis] 간단 사용법  (0) 2021.08.25
[SQL] 기초 연습  (0) 2021.08.17
[BoostCourse]1. SQL  (0) 2021.06.03
[인프런] <Chap 3> MySQL 기본  (0) 2021.06.02
Comments