성장에 목마른 코린이

[DB] SQL 내장함수 본문

데이터베이스

[DB] SQL 내장함수

성장하는 코린이 2022. 4. 9. 21:49
728x90

GROUP BY

데이터를 조회할 때 그룹으로 묶어서 조회합니다.

SELECT * FROM customers;

이 쿼리를 주(state)에 따라 그룹으로 묶어 표현할 수 있습니다.

SELECT * FROM customers
GROUP BY State;

GROUP BY 쿼리로 간단하게 State에 따라 그룹화할 수 있습니다.

쿼리의 결과를 확인하면, 데이터가 중간에 비어있는 것을 확인할 수 있습니다.

데이터베이스에서 데이터를 불러오는 과정에서 State에 따라 그룹을 지정했지만, 그룹에 대한 작업 없이 조회만 했습니다.

그래서 쿼리의 결과로 나타나는 데이터는 각 그룹의 첫 번째 데이터만 표현됩니다.

HAVING

HAVING은 GROUP BY 로 조회된 결과를 필터링할 수 있습니다.

SELECT CustomerId, AVG(Total)
FROM invoices
GROUP BY CustomerId
HAVING AVG(Total) > 6.00

이 쿼리는 모든 고객의 주문서에서 가격의 평균을 구한 뒤에, 그 평균이 6.00을 넘는 결과만 조회합니다.

 

이렇게 GROUP BY로 그룹을 지은 결과에 필터를 적용할 때에는 HAVING을 사용할 수 있습니다.

 

HAVING은 그룹화한 결과에 대한 필터이고, WHERE는 저장된 레코드를 필터링합니다.

COUNT()

COUNT 함수는 레코드의 개수를 셀 때 사용합니다.

SELECT *, COUNT(*) FROM customers
GROUP BY State;

위 커맨드를 실제로 실행하면, 각 그룹의 첫 번째 레코드와 각 그룹의 레코드 개수를 집계하여 리턴합니다. 다음과 같이 변경하면, 그룹으로 묶인 결과의 레코드 개수를 확인할 수 있습니다.

SELECT State, COUNT(*) FROM customers
GROUP BY State;

SUM()

SUM 함수는 레코드의 합을 리턴합니다. SUM 함수의 사용법은 다음과 같습니다.

SELECT InvoiceId, SUM(UnitPrice)
FROM invoice_items
GROUP BY InvoiceId;

 

위 커맨드는 invoice_items라는 테이블에서 InvoiceId 필드를 기준으로 그룹하고, UnitPrice 필드 값의 합을 구합니다.

AVG()

AVG 함수는 레코드의 평균값을 계산하는 함수입니다. AVG 함수의 사용법은 다음과 같습니다.

SELECT TrackId, AVG(UnitPrice)
FROM invoice_items
GROUP BY TrackId;

MAX(), MIN()

MAX 함수와 MIN 함수는 각각 레코드의 최댓값과 최솟값을 리턴합니다.

SELECT CustomerId, MIN(Total)
FROM invoices
GROUP BY CustomerId

각 고객이 지불한 최소 금액을 리턴합니다. MIN 대신 MAX를 쓰면 최대 금액을 리턴합니다.

Comments