기록장

좀 더 깊게 알아보는 SELECT 문 - 2 본문

개발/SQL

좀 더 깊게 알아보는 SELECT 문 - 2

HJJJJJ 2022. 11. 23. 16:05
728x90

GROUP BY 절

그룹으로 묶어주는 역활

SELECT 열_이름
 FROM 테이블_이름
 WHERE 조건식
 GROUP BY 열_이름 
 HAVING 조건식
 ORDER BY 열_이름
 LIMIT 숫자

 

집계함수

GROUP와 함께 주로 사용되는 집계 함수

함수명 설명
SUM() 합계를 구합니다
AVG() 평균을 구합니다
MIN() 최소값을 구합니다
MAX() 최대값을 구합니다
COUNT() 행의 개수를 셉니다
COUNT(DISTINCT) 행의 개수를 셉니다(중복은 1개만 인정)

 

 

 

 

SELECT mem_id, SUM(AMOUNT) FROM BUY GROUP BY mem_id:
//각 회원(mem_id)별로 구매한 개수(AMOUNT)를 합쳐서 출력하기 위해서는
//집계 함수인 SUM()과 GROUPY BY 절을 사용하면 된다 
//GROUP BY로 회원별로 묶어 준 후에 SUM() 함수로 구매한 개수를 합치면 된다

-> 별칭을 사용해서 결과를 바꿀 수 있음

SELECT mem_id "회원아이디", SUM(amount) "총 구매 개수"
FROM buy GROUP BY mem_id;

 

전체 회원이 구매한 물품 개수(amount)의 평균을 구하는 법

SELECT AVG(AMOUNT) "평균 구매 개수" FRMO buy;

 

각 회원이 한 번 구매시 평균 몇 개를 구매 했는지 알아보는거

SELECT mem_id, AVG(amount) "평균 구매 개수" 
FROM buy 
GROUP BY mem_id;

 

회원 테이블에서 연락처가 있는 회원 수를 카운트

SELECT COUNT(열_이름) //COUNT(*)는 모든 행의 개수, COUNT(열_이름)은 NULL 값 빼고 개수 센다
FROM MEMBER;

 

 

HAVING 절

 

어떤 조건으로 구매액이 10000 이상인 회원한테 사은품을 증정하려고 하면

조건을 포함하는 WHERE 절을 생각 하게 되는데 집계 함수는 WHERE를 쓸 수가 없다

 

이럴 때 WHWER 대신 HAVING 절임 

비슷하지만 집계 함수에 대해서 조건을 제한 하는 것 

HAVING절은 꼭 GROUP BY 절 다음에 나와야함

SELECT mem_id , sum(price*amount) 
FROM BUY 
GROUP BY mem_id
HAVING SUN(price * amount) > 1000;
ORDER BY SUM(price*amount) DESC;

 

728x90

'개발 > SQL' 카테고리의 다른 글

[MYSQL]JOIN -1 / as  (0) 2022.12.04
[Oracle] TO_CHAR함수 사용법  (0) 2022.12.02
[Oracle] NVL()  (0) 2022.11.26
LIKE  (0) 2022.11.24
좀 더 깊게 알아보는 SELECT 문 - 1  (0) 2022.11.22
Comments