본문 바로가기

Data Literacy/SQL

(32)
Chapter 2. JOIN을 이용한 데이터 조합 - (8) 그룹화 : GROUP BY & HAVING 1 이번 아티클에서는 본격적으로 GROUP BY에 대해서 살펴보도록 하겠습니다. 여기서 설명하기 위한 샘플 테이블을 아래 예시와 같이 생성해 보도록 하겠습니다. create table sample00 ( no int primary key, name varchar (255), quantity int ); insert into sample00( no, name, quantity ) values (1, 'A', 1), (2, 'A', 2), (3, 'B', 10), (4, 'C', 3), (5, null, null); select * from sample00; 위 쿼리를 통해서 아래와 같은 테이블이 생성되는 것을 확인할 수 있습니다. 이제 이 테이블을 기준으로 GROUP BY에 대해서 설명을 진행해 보겠습니다. ..
Chapter 2. JOIN을 이용한 데이터 조합 - (7) 집계 함수 : SUM, AVG, MIN, MAX 앞서서 집계 함수 중 COUNT에 대해서 자세하게 살펴보았습니다. 지금부터는 집계함수 중 COUNT 이외의 것들에 대해서도 살펴보겠습니다. COUNT를 제외한 대표적인 집계 함수는 SUM, AVG, MIN, MAX가 있습니다. 가장 기본적인 사용법은 COUNT와 마찬가지로 파라미터에 집합(칼럼)을 넣는 형태로 사용하게 됩니다. 또한 DISTINCT 사용 시에 살펴보았던 것처럼, 여기서도 집합 앞에 ALL 또는 DISTINCT를 붙여 중복 항목을 제거하거나 모두 표시할 수 있습니다. SUM( [ALL | DISTINCT] 집합명 ) AVG( [ALL | DISTINCT] 집합명 ) MIN( [ALL | DISTINCT] 집합명 ) MAX( [ALL | DISTINCT] 집합명 ) ○ SUM : 합계 구하기..
Chapter 2. JOIN을 이용한 데이터 조합 - (7) 집계 함수 : COUNT 2 앞서서 우리는 집계함수 COUNT( )에 대한 기본적인 사용법을 알아보았습니다. 다시 한번 되짚어보자면, COUNT의 파라미터에는 인수로 특정 테이블의 열 이름을 전달할 수 있습니다. 이렇게 열 이름을 지정하게 되면, 해당 열에 한해 행의 개수를 카운트하게 됩니다. 그리고 '*'를 인자 값으로 전달할 수 있는 함수는 COUNT( ) 함수가 유일합니다. 그럼, COUNT( ) 함수로 특정 열의 개수를 셀 때, NULL은 어떻게 처리할까요? 일단 행이 있긴 있으니 카운트에 포함하지 않을까요? 한번 직접 알아보도록 하겠습니다. 우선 dvdrental DB의 ADDRESS 테이블을 살펴보도록 하겠습니다. 전체 데이터를 살펴보고, ADDRESS2 칼럼에 NULL이 몇 개나 있을지 확인해 보겠습니다. select ..
Chapter 2. JOIN을 이용한 데이터 조합 - (7) 집계 함수 : COUNT 1 이번 시간부터는 빠르게 집계함수에 대해서 배워보겠습니다. 사실 원래는 GROUP BY를 배워볼 차례인데요, GROUP BY라는 clause가 짧은 문장으로 그 개념을 설명하기 쉽지 않은 구절입니다. 그러다 보니 몇몇 강의나 설명에서 바로 예제부터 설명한다거나(이렇게 모아주는 편리한 기능이에요~), 단순히 "같은 것 끼리 집합을 만들어 모아주는 거예요~" 정도의 추상적인 설명을 하기도 합니다. GROUP BY라는 clause는, 결국 집계함수와 함께 사용해야 의미있는 쿼리가 됩니다. 결국 SQL의 집계 함수에 대해서 사전에 이해가 이루어지고, GROUP BY를 배워야 그 관념이 자연스럽게 익혀지게 되는 것이죠. 그리고 그 이후에 HAVING 같은 구문을 학습하게 되면 가장 자연스러운 이해를 진행할 수 있습..
Chapter 2. JOIN을 이용한 데이터 조합 - (6) NATURAL JOIN 우선 이번 아티클에서는 NATURAL JOIN을 살펴보겠습니다. 사실, 이 NATURAL JOIN은 실제 사용 빈도가 꽤 낮기 때문에 잘 사용하지 않는 명령어입니다. 그런데 굳이 이 명령어에 대해서 살펴보는 이유는 무엇일까요? 이유는, 다름 아닌 "INNER JOIN"의 사용법을 한번 더 상기시키는 명령어이기 때문입니다. 일단 우리가 이미 살펴보았던 INNER JOIN을 되새기고 오도록 하겠습니다. Chapter 2. JOIN을 이용한 데이터 조합 - (1) INNER JOIN 우선 당연하겠지만, JOIN이란 명령어 자체에 대한 정의가 이루어져야 JOIN과 관련된 내용을 배울 수 있을 것입니다. 기본적으로 SQL에서 JOIN은 [한 DB내의 두 개 이상의 테이블에서 레코드를 조합하 nozeroslope...
Chapter 2. JOIN을 이용한 데이터 조합 - (5) CROSS JOIN 이번 아티클에서는 CROSS JOIN을 살펴보겠습니다. 우선 CROSS JOIN은 또 무엇을 의미하는가? 이해를 하고 넘어가야겠죠. 100% 정확한 학술적 정의는 아니지만, 간단히 말해서 '곱집합'의 형태인 catesian product 연산을 구현합니다. 예를 들어 두 개의 테이블이 있을 경우, 각각의 값들이 모두 매치되는 경우의 수를 전부 표현하게 되는 것이죠. 만일 2명의 사람 A, B가 있고 색깔이 3개가 있다면 - 두 사람과 3개의 색상을 매칭할 수 있는 경우의 수는 (A, 빨강) (A, 파랑) (A, 노랑) (B, 빨강) (B, 파랑) (B, 노랑)의 형태로 6개가 나오겠죠? CROSS JOIN 역시 이러한 케이스를 테이블에서 연산하게 됩니다. 간단한 CROSS JOIN 실습을 위해, 아래와 ..
Chapter 2. JOIN을 이용한 데이터 조합 - (4) FULL OUTER JOIN 이번 아티클에서는 FULL OUTER JOIN을 배워보겠습니다. FULL이라는 단어에서 느껴지듯, 뭔가 종합적인 JOIN이 이루어지는 것처럼 느껴집니다. 과연 예상이 맞을지, 살펴보겠습니다. 일단 요약해서 설명하자면, 두 개의 테이블을 FULL OUTER JOIN으로 조합하게 된다면 결과적으로는 두 개의 테이블이 JOIN 되어 매칭되면서 출력됩니다. 단, 우리가 배웠던 내용을 기반으로 설명한다면 INNER JOIN + LEFT OUTER JOIN + RIGHT OUTER JOIN의 결과물이 모두 출력된다고 이해할 수 있습니다. 위의 그림처럼, 두 테이블에서 조건에 해당하는 모든 데이터의 합집합과 비슷한 개념이라고 생각해 주시면 되겠습니다. 그럼 일단 새로운 테이블을 생성하고, 그 테이블에 FULL OUT..
Chapter 2. JOIN을 이용한 데이터 조합 - (3) SELF JOIN 앞서서 INNER JOIN과 (LEFT/RIGHT) OUTER JOIN에 대해서 학습해 보았습니다. 다시 한번 내용을 되짚어보면, INNER JOIN의 경우 두 개 이상의 테이블에 공통되는 칼럼을 통해서 - 해당 테이블들의 데이터를 연결해 새로운 테이블을 또 하나 생성하는 경우였습니다. 이를테면 CUSTOMER 테이블의 PAYMENT ID를 확인하고, PAYMENT 테이블에 PAYMENT ID를 기반으로 결제 정보를 불러와서 고객 별 결제 정보를 리스트업 할 수 있는 것이죠. LEFT/RIGHT OUTER JOIN의 경우, 두 개의 테이블을 매칭할 때 왼쪽 또는 오른쪽 테이블은 무조건 기준으로서 전부 출력하고, 주어진 조건에 매칭되는 데이터만 반대편에 보여주는 경우에 사용합니다. 만일 매칭되는 데이터가 ..