[MSSQL] 요약정보 만들기

2020. 5. 1. 01:59·데이터베이스/Mssql
반응형

01_집계함수 사용하기

함수

매개변수

표현식

AVG

([ALL|DISTINCT]숫자 표현식)

표현식의 전체나 각각의 평균값

COUNT

([ALL|DISTINCT]숫자 표현식)

표현식 전체나 각각의 개수

COUNT

(*)

선택된 모든 행의 개수

MAX

(숫자 표현식)

표현식에서 가장 큰 값

MIN

(숫자 표현식)

표현식에서 가장 작은 값

SUM

([ALL|DISTINCT]숫자 표현식)

수치 표현식에서 전체나 각각의 합계

--제품의 모든 가격을 더하여 제품의 개수로 나눌 때

--전체 레코드 개수로 나눈 경우와 가격 항목 개수로 나눈 경우를 비교

SELECT SUM(가격)/COUNT(가격), SUM(가격)/COUNT(*)

FROM 제품

위에 결과값을 보면 평균값이 다르게 나왔다. 왜 그럴까?

 

우선 COUNT(가격)의 값과 COUNT(*)값을 비교해 보자.

 

SELECT SUM(가격) AS [SUM(가격)], COUNT(가격) AS [COUNT(가격)], COUNT(*) AS [COUNT(*)]

FROM 제품

COUNT(가격) 과 COUNT(*)의 값이 2의 차이를 나타내는 이유는 가격 열에 NULL 값이 있는 행이 2개가 있기 때문이다. COUNT(*)는 NULL행도 포함하여 계산하고 COUNT(가격)은 NULL을 제외하고 계산한다.

 

*결과 값이 같은 SELECT문 3가지

SELECT SUM(가격)/COUNT(*)

FROM 제품

WHERE 가격 IS NOT NULL;

 

SELECT SUM(가격)/COUNT(가격)

FROM 제품

 

SELECT AVG(가격)

FROM 제품

 

02_GROUP BY / HAVING

집계함수는 대부분 GROUP BY절과 함께 사용한다.

GROUP BY는 열에 따라 그룹을 모아 집계를 내기 위한 사용하는 구문이다.

HAVING은 GROUP BY를 적용하여 그룹별 집계를 낸 결과 값들 중에서 조건에 맞는 것들을

골라낼 때 사용하는 구문이다.

 

SELECT *

FROM 제품

 

--종류별로 평균 가격을 구하는 SQL구문

SELECT 종류,AVG(가격) AS 종류별가격

FROM 제품

GROUP BY 종류

 

--HAVING절을 이용하여 5만원 이상 인 것만 추려낸 구문

SELECT 종류,AVG(가격) AS 종류별가격

FROM 제품

GROUP BY 종류

HAVING AVG(가격) >= 50000;

 

03_GROUP BY ALL

 

--GROUP BY ALL

SELECT 종류,AVG(가격) AS 평균가격

FROM 제품

WHERE 가격>= 50000

GROUP BY ALL 종류

 

--GROUP BY

SELECT 종류, AVG(가격) AS 평균가격

FROM 제품

WHERE 가격>=50000

GROUP BY 종류

 

--종류별 평균가격을 구하면서 '점퍼'와 '셔츠'는 검색조건에서 제외

--그러나 결과에 나타나도록 하였다.

SELECT 종류, AVG(가격) AS 평균가격

FROM 제품

WHERE 종류 NOT IN ('점퍼','셔츠')

GROUP BY ALL 종류

 

04_ROLLUP

 

SELECT 반,성별,AVG(점수) AS 평균점수

FROM 성적

GROUP BY 반,성별 WITH ROLLUP

반응형

'데이터베이스 > Mssql' 카테고리의 다른 글

[MSSQL] SELECT 문  (0) 2020.04.30
[MSSQL] Transact-SQL?  (0) 2020.04.30
'데이터베이스/Mssql' 카테고리의 다른 글
  • [MSSQL] SELECT 문
  • [MSSQL] Transact-SQL?
:j
:j
ddongjunn@gmail.com
  • :j
    dev.j
    :j
  • 전체
    오늘
    어제
    • :j
      • 프로그래밍 언어
        • Java
        • html
        • JavaScript
        • XML
        • JSON
        • CSS
        • jQuery
        • Web
        • k8s
        • JPA
      • 프레임워크
        • Spring
      • 코딩 테스트
        • Java
      • 네트워크
        • CCNA
      • 데이터베이스
        • Mssql
        • Oracle
      • 회고
      • :j story
      • CS
  • 블로그 메뉴

    • 홈
    • 태그
    • github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    id
    group by
    항해99
    Queue
    HAVING
    항해플러스
    Name
    MSSQL
    오버라이딩
    appendChild
    다형성
    항해플러스백엔드
    오버로딩
    <br>
    항해백앤드
    항해플러스백앤드
    멤버변수
    지역변수
    항해솔직후기
    class
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
:j
[MSSQL] 요약정보 만들기
상단으로

티스토리툴바