SQL : GROUP BY & HAVING : GROUP BY와 HAVING를 사용한 검색.
-- ※ GROUP BY와 HAVING를 사용한 검색(GroupBy.sql)
-- [0] tempdb에 테스트용 테이블 생성 및 데이터 입력
USE tempdb
GO
-- DROP TABLE GroupByTest
CREATE TABLE dbo.GroupByTest
(
[핸드폰종류] varchar(2),
[판매개수] int
)
GO
INSERT GroupByTest VALUES('A1', 200)
INSERT GroupByTest VALUES('A2', 333)
INSERT GroupByTest VALUES('A3', 567)
INSERT GroupByTest VALUES('A4', 789)
INSERT GroupByTest VALUES('A1', 234)
INSERT GroupByTest VALUES('A4', 987)
INSERT GroupByTest VALUES('A2', 222)
INSERT GroupByTest VALUES('A1', 234)
INSERT GroupByTest VALUES('A3', 278)
INSERT GroupByTest VALUES('A1', 100)
-- 집계함수 사용 검색
Select * From GroupByTest
Select COUNT([판매개수]) AS [총판매횟수] From GroupByTest --10
Select Sum([판매개수]) AS [총판매개수] From GroupByTest --3944
Select AVG([판매개수]) AS [총판매평균] From GroupByTest --394
Select MAX([판매개수]) AS [최대판매개수] From GroupByTest --987
Select MIN([판매개수]) AS [총소판매개수] From GroupByTest --100
-- [2] 아래 구문을 실행시켜보면 다음과 같은 에러가 나타난다.
--'GroupByTest.핸드폰종류'열이 집계함수에 없고 GROUP BY 절이 없으므로 SELECT 목록에서 사용할수 없습니다.
SELECT [핸드폰종류],AVG ([판매개수]) AS [총판매평균] FROM GroupByTest
-- [3] 위와 같이 집계함수로 계산되어지지 않고 그룹화되어 출력시킬 필드는 반드시 GROUP BY절에 기록하여야한다.
SELECT [핸드폰종류],AVG ([판매개수]) AS [총판매평균]
FROM GroupByTest
GROUP BY[핸드폰종류]
-- [4] 만약 그룹별 총 판매평균이 300이상인것만 출력하고자 할때에는 HAVING절에 조건을 추가하여야한다.
SELECT [핸드폰종류],AVG ([판매개수]) AS [총판매합계],AVG([판매개수]) AS [총판매평균]
FROM GroupByTest
GROUP BY[핸드폰종류]
HAVING AVG([판매개수]) >- 300 -- 판매개수의 평균이 300이상인것만 검색
[출처]웹디황용
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기, 각종 광고, 영업, 판매, 제안서, 전단지 반응율 3배×10배 이상 높이는 마법의 8단계 공식" |
![]() |
☞자세히보기 |
|
|