반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Vue.config
- javascript
- Vue3 configureWebpack
- Vue configureWebpack
- Nginx Reverse Proxy
- 리버스 프록시 예제
- tomcat
- Visual Studio 2015 삭제
- MSSQL 동적 쿼리
- MSSQL 문자열
- vue.js
- 프록시 예제
- vue3
- Visual Studio 2015 강제 삭제
- 웹 자동화
- Selenium 설치
- SQLP
- 웹 크롤링
- Visual Studio 패키지에 실패했습니다.
- spring
- 디자인 패턴 사례
- Tomcat Error
- Visual Studio 강제 삭제
- .NET Core Proxy
- Visual Studio 재설치
- Visual Studio 2015 설치
- Selenium 환경
- 업무 자동화
- .NET Core
- vue
Archives
- Today
- Total
금백조의 개발 블로그
[MSSQL]집계함수(Aggregate Function)를 이용하여 특정 값(0...)을 제외, NULL을 포함하고 집계하기 본문
Database/SQL Server(MSSQL)
[MSSQL]집계함수(Aggregate Function)를 이용하여 특정 값(0...)을 제외, NULL을 포함하고 집계하기
금백조 2021. 12. 22. 12:57반응형
서론
데이터를 집계할 때 특정 데이터를 제외하고 집계를 해야 할 경우가 있습니다. 특히 AVG를 사용한 평균 집계인 경우 0을 제외하거나 NULL을 포함하여 평균을 구해달라는 요구사항을 종종 요청받을 때가 있습니다. 오늘은 이에 대한 내용을 포스팅하겠습니다.
본론
집계함수는 NULL 데이터를 제외하고 집계를 수행합니다. 따라서 아래 예시와 같이 CASE문을 사용하여 제외시킬 데이터를 NULL로 변환시키면 이를 제외하고 집계를 수행하게 됩니다.
[예제]
--테스트할 임시테이블 및 데이터 생성
SELECT 'ALICE' [NAME], 100 [SCORE]
INTO #TEMP_TABLE
UNION ALL
SELECT 'BOB' , 0
UNION ALL
SELECT 'SAM' , 30
UNION ALL
SELECT 'TOM' , 80
UNION ALL
SELECT 'SWAN' , 0
UNION ALL
SELECT 'WILLIAM' , 10
UNION ALL
SELECT 'KEVIN' , 70
UNION ALL
SELECT 'ARIANNA' , 80
[조회 결과]
1) 0을 제외한 평균 집계
SELECT
AVG(SCORE) SCORE_AVG1--전체 평균 집계
,AVG(CASE WHEN SCORE = 0 THEN NULL ELSE SCORE END) SCORE_AVG2--0을 제외한 평균 집계
FROM #TEMP_TABLE
[실행 결과]
2) 특정 범위를 제외한 평균 집계 (예시는 0 이상 30 이하)
SELECT AVG(CASE WHEN SCORE BETWEEN 0 AND 30 THEN NULL ELSE SCORE END) SCORE_AVG
FROM #TEMP_TABLE
[실행 결과]
반대로 NULL 데이터도 0으로 취급하여 집계에 포함시키고 싶을 경우 ISNULL 내장 함수를 이용하여 NULL을 0으로 변환하면 원하는 집계 결과를 구할 수 있습니다.
--테스트할 임시테이블 및 데이터 생성(NULL 포함)
SELECT 'ALICE' [NAME], 100 [SCORE]
INTO #TEMP_TABLE
UNION ALL
SELECT 'BOB' , 0
UNION ALL
SELECT 'SAM' , 30
UNION ALL
SELECT 'TOM' , 80
UNION ALL
SELECT 'SWAN' , NULL
UNION ALL
SELECT 'WILLIAM' , 10
UNION ALL
SELECT 'KEVIN' , NULL
UNION ALL
SELECT 'ARIANNA' , 80
[조회 결과]
3) NULL 데이터를 포함한 평균 집계
SELECT
AVG(SCORE) SCORE_AVG1--전체 평균 집계(NULL 제외)
,AVG(ISNULL(SCORE,0)) SCORE_AVG2--NULL을 포함한 평균 집계(NULL -> 0 변환)
FROM #TEMP_TABLE
[실행 결과]
결론
집계 함수가 NULL을 제외하고 집계를 수행하는 특성을 이용하여 여러 예제를 구현해보았습니다. 이는 예제에서 사용한 AVG 집계 함수뿐만 아니라 SUM, MIN, MAX 등 모든 집계 함수에 해당하는 내용이므로 이번 글에서 알아본 특성을 이해하고 원하는 집계 결과를 조회하는데 도움이 되는 글이 되었으면 좋겠습니다.
반응형
'Database > SQL Server(MSSQL)' 카테고리의 다른 글
[MSSQL]문자열 숫자 세 자리 콤마, 세 자리 콤마 지우기 예제 (0) | 2022.05.05 |
---|---|
[MSSQL]저장 프로시저 장단점, 사용 예제 정리 (0) | 2022.05.03 |
[MSSQL]FOR XML PATH 사용시CHAR(13) 문자열이 
 로 바뀌는 현상 해결 방법 (0) | 2021.10.25 |
[MSSQL]FULL OUTER JOIN 개념 및 예제(FULL JOIN 합집합) (0) | 2021.07.17 |
[MSSQL]분석 함수 개념 및 예제(윈도우 함수) (0) | 2021.07.09 |