[SQL] 20. 행 개수 구하기 - COUNT

uuuu.jini·2023년 1월 29일
0

SQL 첫걸음

목록 보기
20/36
post-thumbnail

대표적인 집계함수

  • COUNT(), SUM(), AVG(), MIN(), MAX()

SQL은 데이터베이스라 불리는 데이터 집합을 다루는 언어이다. 이 같은 집합의 합계나 개수가 궁금하다면 SQL 제공 집계함수를 이용하여 간단 구현 가능

1. COUNT로 행 개수 구하기


집계함수는 인수로 집합을 지정한다. (집합함수)

  • 집합을 특정 방법으로 계산하여 그 결과를 반환

  • COUNT: 인수로 주어진 집합의 개수를 구해 반환

COUNT(집합)

  • ex) COUNT로 행 개수 구하기
  • SELECT COUNT(*) FROM sample51;

집계함수의 특징은 복수의 값(집합)에서 하나의 값을 계산해내는 것이다. 집합으로부터 하나의 값을 반환한다. 이렇게 집합으로부터 하나의 값을 계산하는 것을 집계라고 부른다. (집계함수를 SELECT 구에 쓰면 WHERE구의 유무와 관계없이 결괏값으로 하나의 행을 반환한다.)

- WHERE 구 지정하기

  • ex) sample51의 행 개수를 where구를 지정하여 구하기
  • SELECT COUNT(*) FROM sample51 WHERE name = 'A';

SELECT 구는 WHERE구보다 나중에 내부적으로 처리된다. 따라서 WHERE 구로 조건을 지정하면 테이블 전체가 아닌, 검색된 행이 COUNT로 넘겨진다. 즉, WHERE 구의 조건에 맞는 행의 개수를 구할 수 있다.

2. 집계함수와 NULL 값


COUNT 인수로 열명을 지정할 수 있다. 그 열에 한해서 행의 개수를 구할 수 있다. *를 인수로 사용할 수 있는 것은 COUNT 함수 뿐이다. 다른 집계함수에서는 열명이나 식을 인수로 지정한다.

집계함수에서는 집합 안에 NULL의 값이 있을 경우 이를 제외하고 처리한다.

  • ex. 테이블의 no에는 NULL값이 없지만, name열에는 NULL 값이 존재한다.
  • SELECT COUNT(no), COUNT(name) FROM sample51;
  • no의 수는 5개, name의 수는 4개가 나옴

3. DISTINCT로 중복 제거


집합을 다룰 때, 중복된 값이 있는 여부가 문제가 될수 있다. 데이터가 서로 중복되지 않는 경우 유일한 값을 가진다, 중복되지 않는다라는 표현을 사용한다.

SQL이 SELECT 명령은 이러한 중복된 값을 제거하는 함수를 제공한다. -> DISTINCT

  • SELECT DISTINCT name FROM sample51;

SELECT구에서 DISTINCT를 지정하면 중복된 데이터를 제외한 결과를 클라이언트로 반환한다. 중복여부는 SELECT구에 지정된 모든 열을 비교해 판단한다. (ALL: 중복 포함(기본값))

4. 집계함수에서 DISTINCT


name열에서 NULL 값을 제외하고, 중복하지 않는 데이터의 개수르 ㄹ구하는 경우

  • DISTINCT를 집계함수의 인자로 사용
  • SELECT COUNT(ALL name), COUNT(DISTINCT name) FROM sample51;
profile
멋쟁이 토마토

0개의 댓글