SQL 내장함수
SQL 내장함수
GROUP BY
데이터를 조회할 때 그룹으로 묶어서 조회한다.
-- customers의 모든 레코드르 State에 따라 그룹화
SELECT * FROM customers
GROUP BY State
HAVING
GROUP BY로 조회된 결과에 조건을 설정 할 떄 사용한다.
-- invoices 테이블을 CustomerId로 그룹화하고 그 평균이 6을 초과한 결과를 조회
SELECT CustomerId, AVG(Total)
FROM invoices
GROUP BY CustomerId
HAVING AVG(Total) > 6.00
COUNT()
레코드의 갯수를 구하는 함수
-- 각 State 에 해당하는 레코드의 개수를 확인
SELECT State, COUNT(*) FROM customers
GROUP BY State;
SUM()
레코드의 합을 구하는 함수
-- invoice_items라는 테이블에서 InvoiceId 필드를 기준으로 그룹하고, UnitPrice 필드 값의 합을 구함
SELECT InvoiceId, SUM(UnitPrice)
FROM invoice_items
GROUP BY InvoiceId
AVG()
레코드의 평균값을 구하는 함수
SELECT TrackId, AVG(UnitPrice)
FROM invoice_items
GROUP BY TrackId;
MAX(), MIN()
레코드의 최대값, 최소값을 구하는 함수
-- 각 고객이 지불한 최소 금액
SELECT CustomerId, MIN(Total)
FROM invoices
GROUP BY CustomerId
SELECT 문의 실행 순서
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
SELECT CustomerId, AVG(Total)
FROM invoices
WHERE CustomerId >= 10
GROUP BY CustomerId
HAVING SUM(Total) >= 30
ORDER BY 2
위 쿼리문의 실행 순서는 다음과 같다.
- FROM invoices: invoices 테이블에 접근을 합니다.
- WHERE CustomerId >= 10: CustomerId 필드가 10 이상인 레코드들을 조회합니다.
- GROUP BY CustomerId: CustomerId를 기준으로 그룹화합니다.
- HAVING SUM(Total) >= 30: Total 필드의 총합이 30 이상인 결과들만 필터링합니다.
- SELECT CustomerId, AVG(Total): 조회된 결과에서 CustomerId 필드와 Total 필드의 평균값을 구합니다.
- ORDER BY 2: AVG(Total) 필드를 기준으로 오름차순 정렬한 결과를 리턴합니다.