GROUP BY, ORDER BY, Alias

Series: 데이터베이스 기초

데이터베이스 기초contains 2

1. 통계

GROUP BYORDER BY는 주로 통계를 구할때 사용하며, 여기서 통계는 최대, 최소, 평균, 합계를 의미한다. 이제부터 쿼리문이 길어지고, 복잡해지기 시작하는데 침착하게 쿼리문을 작성해보면 생각보다 어렵지 않다는 것을 느낄 수 있다.

여러 조건을 나타내는 쿼리문을 한 번에 작성한다. ( X )
조건을 하나씩 맞추어 쿼리문을 여러 차례 수정하면서 작성한다. ( O )

2. GROUP BY

GROUP BY를 사용할 때에는 반드시 통계 방법을 명시하여야 한다. 먼저, 테이블에서 A 필드의 개수를 구하는 쿼리문을 작성하면 다음과 같다.

-- COUNT는 개수를 파악하는 함수이다.
SELECT COUNT(*) FROM TBL
GROUP BY A;

쿼리문을 아래와 같이 작성하면 GROUP BY와 같은 결과를 확인할 수 있다.

-- DISTINCT는 중복 제거 함수이다.
SELECT COUNT(DISTINCT(A)) FROM TBL;

만약에 구하고자 하는 통계 방법을 명시하지 않고 아래와 같이 쿼리문을 작성하면 오류가 발생한다.

-- 통계 방법이 없으므로 오류가 발생한다.
SELECT * FROM TBL
GROUP BY A;

테이블에서 A 필드의 데이터를 기준으로, C 필드의 데이터 값이 50 이상인 행의 수를 구하면 다음과 같다.

SELECT A, COUNT(*) FROM TBL
WHERE C >= 50
GROUP BY A;

3. ORDER BY

ORDER BY는 조회한 데이터를 오름차순(ascending) 또는 내림차순(descending)으로 정렬할 때 사용한다. 테이블에서 C 필드의 데이터를 각각 오름차순과 내림차순으로 정렬된 상태로 조회하면 다음과 같다.

-- 오름차순은 ASC 생략이 가능한다.
SELECT * FROM TBL
ORDER BY C;

-- 내림차순은 반드시 DESC를 입력해주어야 한다.
SELECT * FROM TBL
ORDER BY C DESC;

ORDER BYGROUP BY와 함께 자주 사용되며, 테이블의 A 필드의 행 수를 내림차순으로 정렬하면 다음과 같다.

SELECT A, COUNT(*) FROM TBL
GROUP BY A
ORDER BY COUNT(*) DESC;

4. Alias

Alias는 별칭이라고도 하며, 바로 위의 쿼리문과 같이 함수를 다시 호출해야 하는 상황이거나, 테이블 또는 필드명이 긴 경우에 별도의 이름을 붙여주기 위해 사용한다. 먼저, 테이블의 A 필드의 행 수를 내림차순으로 정렬할 때, 행 수에 CNT 라는 별칭을 붙여주면 다음과 같다.

SELECT A, COUNT(*) as CNT FROM TBL
GROUP BY A
ORDER BY CNT DESC;