기록장
좀 더 깊게 알아보는 SELECT 문 - 2 본문
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