SQL 5장 정리
집계함수
COUNT 집계함수
- 집계함수는 인수로 집합을 지정한다.
- COUNT 함수는 인수로 주어진 집합의 개수를 구해 반환한다.
- 집계함수는 집합으로부터 하나의 값을 반환한다.
- SELECT 구에 쓰면 WHERE구에 상관없이 결괏값으로 하나의 행만을 반환한다.
SELECT COUNT ( * ) FROM sample51;
- 인수로 지정된 집합의 개수를 계산 (테이블 전체)
SELECT COUNT (*)FROM sample51 WHERE name = 'A';
- SELECT 구는 WHERE구보다 나중에 처리된다. 따라서 WHERE구로 조건을 지정하면 테이블 전체가 아닌 검색된 행이
COUNT로 넘겨진다. 즉 WHERE구의 조건에 맞는 행의 개수를 구할 수 있게 되는 것이다.
SELECT COUNT (no), COUNT (name) FROM sample51;
- 열에 NULL값이 있을 경우 제외하고 카운트한다.
- 하지만 ( * )의 경우 모든 열의 행수를 카운트 하기 때문에 NULL값이 있어도 포함하여 카운트 한다.
DISTINCT
- 중복된 값을 제거해주는 함수
SELECT DISTINCT name FROM sample51;
- SELECT 구에서 DISTINCT를 지정하면 중복된 데이터를 제외한 결과를 반환한다.
- 중복 여부는 SELECT 구에 지정된 모든 열을 비교하여 판단한다.
SELECT COUNT (ALL name), COUNT (DISTINCT name) FROM sample51;
- 집계함수의 인수로 DISTINCT을 사용한 수식을 지정해주면 중복을 제거한 행의 개수를 구할 수 있다.
- DISTINCT를 이용해 집합에서 중복을 제거한 뒤 COUNT로 개수를 구할 수 있다.
SUM
SELECT SUM(quantity) FROM sample51;
- SUM 집계함수에 지정되는 집합은 수치형이다. (문자열형, 날짜시간형 X)
- NULL값 무시, NULL 값을 제거한 뒤 합계를 낸다.
AVG
SELECT AVG(quantity), SUM(quantity) / COUNT(quantity) FROM sample51;
- 평균값을 구해주는 집계함수
- SUM과 동일하게 수치형만 가능하다.
- NULL 값은 무시한다 NULL 값을 무시한 뒤 평균값을 계산한다.
MIN, MAX
SELECT MIN (quantity), MAX (quantity), MIN (name), MAX (name) FROM sample51;
- 문자열형과 날짜시간형이 사용가능하다.
- NULL값은 무시한다.
GROUP BY
SELECT name FROM sample51 GROUP BY name;
- 지정된 열의 값이 같은 행이 하나의 그룹으로 묶인다.
- DISTINCT와 같이 중복을 제거하는 효과가 있지만 집계함수와 같이 사용해야한다.
- 그룹화된 각각의 그룹이 하나의 집합으로서 집계함수의 인수로 넘겨지기 떄문이다.
HAVING
SELECT name, COUNT(name) FROM sample51 GROUP BY name HAVING COUNT (name) = 1;
- WHERE구는 집계함수에서 사용할 수 없기 떄문에 대신 HAVING을 사용하여 조건식을 지정해준다.
- 내부처리 순서
WHERE - GROUP BY - SELECT - ORDER BY
- 그룹화가 필요한 집계함수는 WHERE구에서 지정할 수 없다.
- 별명을 사용할 수 없다.
23강 부터 정리
'DB' 카테고리의 다른 글
[ORACLE] SQL SELECT 칼럼 가로로 합쳐서 조회 (0) | 2022.08.17 |
---|---|
프로그래머스 - SQL1 (0) | 2021.12.13 |
SQL 4장 정리 (0) | 2019.10.11 |