[SQL] MySQL - SELECT 집계 함수와 그룹 검색
by Yena Choi
Study Note
SELECT - 집계 함수
집계 함수를 이용해서 결과 레코드의 수나 합, 평균 등을 구할 수 있다.
행 개수, 합, 평균 구하기
- COUNT() - 조건에 맞는 행의 개수를 반환한다.
- SUM() - 숫자 값을 가지는 칼럼의 합을 반환한다.
- AVG() - 숫자 값을 가지는 칼럼의 평균을 반환한다.
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
값을 COUNT 할 때, NULL이 포함 되어 있다면 IFNULL(column, value)
를 통해 NULL인 값도 같이 COUNT 할 수 있다.
SELECT COUNT(IFNULL(column, 1))
FROM table_name;
-- NULL일 경우 행 개수에 포함되지 않지만, 특정한 값을 주면 COUNT 개수에 포함된다.
최대값, 최소값 구하기
- MIN() - 선택한 행의 최소값을 반환한다.
- MAX() -선택한 행의 최대값을 반환한다.
SELECT MIN(column_name)
FROM table_name
WHERE condition;
SELECT - 그룹 검색
GROUP BY
그룹 함수는 주로 집계 함수와 같이 쓰이며, 결과값을 특정 속성 기준으로 그룹화하여 볼 때 사용된다.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING
GROUP BY에 대한 조건을 지정한다. WHERE 키워드와 집계 함수가 함께 쓰일 수 없기 때문에 HAVING 절이 SQL에 추가되었다. WHERE는 레코드 단위로 필터링하지만, HAVING은 GROUP BY에서 만들어진 그룹 단위로 필터링을 한다.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition;
오름차순, 내림차순 정렬
결과값을 오름차순 혹은 내림차순으로 정렬할 때에는 ORDER BY
를 사용한다. 기본 값은 오름차순 정렬이다. 오름차순 값은 ASC
, 내림차순 값은 DESC
이다.
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
두 개 이상의 정렬 조건을 사용할 경우, ,
를 이용해 나열한다.
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 ASC, column2 DESC;
값에 NULL이 있는 경우, NULL을 결과값 맨 뒤로 보내고 싶을 때에도 ORDER BY를 사용한다.
SELECT column1, column2, ...
FROM table_name
GROUP BY column1
ORDER BY ISNULL(column1), column1 ASC;
References
- https://www.w3schools.com/Sql/default.asp