loading

프로그래밍/MS-SQL

SQL문 실습 - GROUP BY (3)

침착곰 2016. 4. 17. 16:32
반응형

이전 글에 이어서 

SQL문 실습 - GROUP BY (2)


SQL문 실습 - GROUP BY (1)

GROUP BY SQL문 예제들을 풀어보면서 GROUP BY에 대해서 어떻게 활용되는지 알아보겠습니다.


1. CONVERT를 사용해서 날짜데이터를 YYYYMM으로 자른 후에 GROUP BY를 통해서 월별로 GROUP BY를 했다.

그리고 월별 데이터의 갯수를 출력하였다.

1
2
3
4
5
6
7
8
9
10
11
--  Use Orders
--    Select only OrderYM and OrderCount
--    OrderYM = OrderDate Change to YYYYMM format
--    OrderCount = Count of Order by OrderYM
------------------------------------------------------------------------------
  SELECT CONVERT(NCHAR(6), OrderDate, 112) OrderYM 
        ,COUNT(*) OrderCount
    FROM Orders
   WHERE OrderDate BETWEEN '1997-01-01' 
     AND '1997-12-31'
GROUP BY CONVERT(NCHAR(6), OrderDate, 112)
cs

- 결과 데이터



2. GROUP BY를 이용해서 CustomerID별로 데이터를 묶고, SUM을 이용해서 CustomerID별 Freight의 합을 구했다.

1
2
3
4
5
6
7
8
9
--  Use Orders
--    Select only CustomerID and TTL_Freight
--    TTL_Freight = Sum of Freight by CustomerID
------------------------------------------------------------------------------
  SELECT CustomerID, SUM(Freight) TTL_Freight
    FROM Orders
   WHERE OrderDate >= '1996-01-01' 
     AND OrderDate < '1997-01-01'
GROUP BY CustomerID
cs

- 결과 데이터


3. GROUP BY로 EmployeeID별로, CustomerID별로 묶은 뒤, Freight의 합을 구하였다.

1
2
3
4
5
6
7
8
9
10
--  Use Orders
--    Select only OrderDate is 1996year.
--    and only EmployeeID, CustomerID, TTL_Freight Column
--    TTL_Freight = Sum of Freight by EmployeeID and CustomerID
------------------------------------------------------------------------------
  SELECT EmployeeID, CustomerID, SUM(Freight) TTL_Freight
    FROM Orders
   WHERE OrderDate >= '1996-01-01' AND OrderDate < '1997-01-01'
GROUP BY EmployeeID, CustomerID
ORDER BY TTL_Freight DESC
cs

- 결과 데이터


4. 요일별로, CustomerID를 GROUP BY를 이용해서 묵은 후 Orders의 갯수를 구하였다.

1
2
3
4
5
6
7
8
9
10
--  Use Orders
--    Select only CustomerID, Weekday, OrderCount
--    Weekday = weekday of OrderDate
--    OrderCount = Count of Order by CustomerID, Weekday
------------------------------------------------------------------------------
  SELECT CustomerID
        ,DATENAME(WEEKDAY, Orderdate) WeekDay
        ,COUNT(*) OrderCount
    FROM Orders
GROUP BY DATENAME(WEEKDAY, OrderDate), CustomerID
cs

- 결과 데이터


5. GROUP BY를 이용해서 YYYYMM별로 묶은 후, 월별 Freight의 최대값과 최소값을 구하였다.

그리고 ORDER BY를 이용해서 YYYYMM별로 오름차순 정렬을 했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
--  Use Orders
--    Select only OrderYM, Max_Freight, MIN_Freight column
--    OrderYM = OrderDate change to YYYYMM
--    MAX_Freight = MAX of freight in OrderYM
--    MIN_Freight = MIN of freight in OrderYM
--    Sort by OrderYM
------------------------------------------------------------------------------
  SELECT CONVERT(NCHAR(6), OrderDate, 112) OrderYM 
        ,MAX(Freight) Max_Freight
        ,MIN(Freight) Min_Freight
    FROM Orders
GROUP BY CONVERT(NCHAR(6), OrderDate, 112)
ORDER BY CONVERT(NCHAR(6), OrderDate, 112)
cs

- 결과 데이터


이번 글에서는 여기까지 GROUP BY에 대해서 다루어보겠습니다.

다음 글에서도 계속해서 GROUP BY예제를 풀어보겠습니다.

다음 글 : SQL문 실습 - GROUP BY(4)


참고 : SQL Server 기본SQL문 교육

반응형
그리드형

'프로그래밍 > MS-SQL' 카테고리의 다른 글

SQL문 실습 - LevelUpTest  (0) 2016.04.17
SQL문 실습 - GROUP BY(4)  (0) 2016.04.17
DBMS의 데이터를 엑셀로 내보내기  (0) 2016.04.17
엑셀의 데이터를 DBMS로 가져오기  (1) 2016.04.17
SQL문 실습 - GROUP BY (2)  (0) 2016.04.16