: 특정 칼럼을 기준으로 그룹화함
칼럼명 입력(SELECT절에서는 그룹화한 칼럼명 또는 집계함수 입력가능)
: 숫자값을 가진 여러 행들에 대해 하나의 결과값을 반환
NULL을 포함한 전체 행의 수
칼럼 내 NULL을 제외한 행의 수
칼럼 내 NULL과 중복을 제외한 행의 수
NULL을 제외한 합계
NULL을 제외한 평균
최댓값
최솟값
: 문자값을 가진 여러 행들에 대해 하나의 결과값을 반환
(EXtensible Markup Language 확장가능한 마크로 둘러싸인 언어) : 칼럼의 내용을 나열해 주는 역할, 계층 구조를 가진 요소들로 구성되어 있음
FOR XML PATH('') 쿼리 실행결과를 XML로 반환
ex)
SELECT STUFF(CONCAT(',',거주지)
FROM 고객정보
FOR XML PATH('')),1,1,'')AS 내역
STUFF : 불필요한 내용을 제거해주는 역할
STUFF(문자열, 시작위치, 길이, 바꿀 문자열)
: 문자열의 시작위치부터 길이만큼의 내역을 바꿀 문자열로 바꿈
ex)
SELECT 기준 STUFF(SELECT CONCAT(',',나열)
FROM 테이블명
WHERE 기준 = A.기준
FOR XML PATH('')),1,1,'')AS 내역
FROM 테이블명 A
GROUP BY 기준
: 그룹화한 데이터에서 조건에 맞는 데이터만 가져옴
집계함수, 연산자 들을 이용
--평균 나이가 20 초과인 ID그룹(A,B,C) 및 평균나이
SELECT LEFT(ID,1) AS ID그룹, AVG(나이) AS [평균 나이]
FROM 고객정보
GROUP BY LEFT(ID,1)
HAVING AVG(나이)>20
ORDER BY AVG(나이) DESC
-- 미혼이거나 여자인 고객 중 적어도 2명 이상의 고객이 사는 거주지 및 고객수
SELECT 거주지, COUNT(*) AS 고객수
FROM 고객정보
WHERE 결혼유무 = N'미혼' OR 성별 = N'여'
GROUP BY 거주지
HAVING COUNT(*)>=2
ORDER BY 고객수 DESC