데이터 분석 및 프로젝트

SQL 내장 함수

막막한 2023. 5. 23. 17:39

GROUP BY

데이터 조회하게 될 때 묶어서 조회하게 해주는 기능 

 

SELECT * FROM customers
GROUP BY state
ORDER BY CustomerId;

 

HAVING 

HAVING은 GROUP BY로 조회된 결과에 대한 필터

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

위 쿼리는 고객이 주문한 값의 평균을 구하고 평균이 6을 넘기는 결과만 조회하는 쿼리다 

 

group by로 인한 결과에 대한 필터를 적용하는 것이 having이다 

 

 

HAVING ?  WHERE?

HAVING은 그룹화한 겨과에 대한 필터라면 , WHERE는 그룹화하기 전에 조회되는 레코드를 필터한다 

WHERE, GROUP BY 결과에 대한 필터는 HAVING을 사용하면 된다 

 

=== 집계 함수===

COUNT()

 몇 개인지 값을 리턴 

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

 

 

SUM()

 조회된 값들에 대한 합을 구해 리턴 

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

invoice_items라는 테이블에서 InvoiceId필드를 기준으로 그룹화 하고 , UnitPrice 필드에 대한 값 합을 구하는 것 이다 

 

AVG()

 평균값 구해주는 함수 

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

TrackId의 평균 UnitPrice 구하기 

 

MAX(), MIN()

 최대 최소값 구하는 함수 

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

customerid로 그룹화를 한 후 고객의 최소값을 보여주는 쿼리 

 

max로 바꾸면 고객이 지불한 최대 금액 명시할 수 있다