SeSAC 4일차(2023-07-20)
SQL 기본(SQL 문-3)
그룹 함수를 사용한 집계 데이터 보고
- 그룹 함수
행 집합 연산을 수행하여 그룹 별로 하나의 결과 산출
SELECT 절에서 사용, NULL 값 무시
AVG, COUNT, MAX, MIN, STDDEV, SUM, VARIANCE 등
ex)
SELECT COUNT(column_name)
=> Null이 아닌 값을 가진 행의 수 반환
SELECT COUNT(*)
=> 중복, null 포함한 행의 수 반환
SELECT COUNT(DISTINCT column_name)
=> Null이 아닌 unique 값의 수 반환
GROUP BY 절, HAVING 절
- GROUP BY
테이블의 행을 더 작은 그룹으로 나눌 수 있다.
HAVING 절로 조건을 줄 수 있다.
그룹 함수가 아닌 SELECT 절의 모든 열은 GROUP BY 절에 있어야 한다.
GROUP BY 절에 지정된 열은 SELECT 절에 지정하지 않아도 된다.
기본 형태)
GROUP BY group_by_expression
HAVING group_condition
ex)
GROUP BY column_name1, column_name2
HAVING MAX(column_name3) > 10000
조인을 사용하여 여러 테이블의 데이터 표시
INNER JOIN
- NATURAL JOIN
두 테이블에서 데이터 유형과 이름이 일치하는 모든 열을 기반으로 테이블을 조인
기본 형태)
SELECT table1.column_name, table2.column_name
FROM table1
NATURAL JOIN table2;
- USING 절로 Join 생성
두 테이블에서 여러 열의 이름은 같지만 데이터 유형이 다를 경우 USING 절 사용하여 Equijoin에 대한 열을 지정 가능
USING 절로 두 개 이상의 열이 일치하는 경우 하나의 열만 일치하도록 할 수 있다.
기본 형태)
SELECT column_name1, column_name2
FROM table1 JOIN table2
USING (column_name2);
- ON 절로 Join 생성
ON 절을 사용하여 임의 조건을 지정하거나 조인할 열을 지정할 수 있다.
기본 형태)
SELECT a.column_name1, b.column_name2
FROM table1 a JOIN table2 b
ON (a.column_name3 = b.column_name3);
ex) 3개 테이블 조인
SELECT a.column_name1, c.column_name2, b.column_name3
FROM table1 a
JOIN table2 b
ON b.column_name4 = a.column_name4
JOIN table3 c
ON b.column_name5 = c.column_name5;
- 테이블 자체 조인(Self Join)
ex)
SELECT a.column_name1, b.column_name2
FROM table1 a JOIN table b
ON (a.column_name3 = b.column_name4);
- Nonequijoin
등호(=) 연산자 외의 다른 연산자를 포함하는 조인 조건
ex)
SELECT a.column_name1, a.column_name2, b.column_name3
FROM table1 a JOIN table2 b
ON a.column_name2
BETWEEN b.column_name4 AND b.column_name5;
OUTER JOIN
- LEFT OUTER JOIN, RIGHT OUTER JOIN
INNER JOIN의 결과와 왼쪽 또는 오른쪽 테이블의 일치하지 않는 행도 반환하는 두 테이블 간의 조인
ex 1)
SELECT a.column1, a.column2, b.column3
FROM table1 a LEFT OUTER JOIN table2 b
ON (a.column2 = b.column2);
ex 2)
SELECT a.column1, b.column2, b.column3
FROM table1 a RIGHT OUTER JOIN table2 b
ON (a.column2 = b.column2);
- FULL OUTER JOIN
INNER JOIN의 결과와 LEFT 및 RIGHT OUTER JOIN의 결과 모두를 반환하는 두 테이블 간의 조인
ex)
SELECT a.column1, b.column2, b.column3
FROM table1 a FULL OUTER JOIN table2 b
ON (a.column2 = b.column2);
- Cartesian Product
조인 조건이 생략된 경우
조인 조건이 잘못된 경우
첫번째 테이블의 모든 행이 두번째 테이블의 모든 행에 조인되는 경우(CROSS JOIN)
위 경우에 Cartesian Product가 생성된다.
Cartesian Product가 생성되지 않게 하려면 반드시 유효한 조인 조건을 포함해야 한다.
'교육 (Today I Learned) > SeSAC' 카테고리의 다른 글
SeSAC 6일차 / SQL 기본(SQL 문-5) (0) | 2023.07.25 |
---|---|
SeSAC 5일차 / SQL 기본(SQL 문-4) (0) | 2023.07.22 |
SeSAC 3일차 / SQL 기본(SQL 문-2) (0) | 2023.07.20 |
SeSAC 2일차 / SQL 기본(커맨드 명령, SQL 문-1) (0) | 2023.07.19 |
SeSAC 1일차 / 데이터베이스 개론 (0) | 2023.07.18 |