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
TAGS.

Comments