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