요약과 집계 각종 요약과 집계 기법을 이해한다. 각종 집계 함수를 이해한다.

Slides:



Advertisements
Similar presentations
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
Advertisements

1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
출석수업 과제 – 총 5문제, 10월 25일 제출 정보통계학과 장영재 교수.
4장 배열과 함수 한빛미디어(주).
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
16 분석함수 분석 함수의 개념 분석 함수의 종류 계층적 질의문.
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
Excel 일차 강사 : 박영민.
Chapter 7. 조건문.
8장 서브 쿼리.
MySQL 및 Workbench 설치 데이터 베이스.
요약 정보 만들기.
기본적인 SELECT문 작성.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
5장 Mysql 데이터베이스 한빛미디어(주).
6장 그룹 함수.
다중 테이블 조회 둘 이상의 테이블을 통합하여 조작하는 기법을 이해한다.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
단일 테이블 조회를 위한 SELECT 문을 이해한다. 열 제약조건과 행 제약조건을 이해한다. 결과 집합 변경 방법을 이해한다.
09 서브쿼리(Subquery) 서브쿼리의 개념 서브쿼리의 종류 데이터베이스 실무에서 서브쿼리 사용시 주의 사항.
Heesang kim PL/SQL 3 Heesang kim.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
5. T-SQL의 시스템 함수 시스템 제공 함수 시스템 제공 함수
23장. 구조체와 사용자 정의 자료형 2.
6장. printf와 scanf 함수에 대한 고찰
Chapter 07. 기본 함수 익히기.
5장 Mysql 데이터베이스 한빛미디어(주).
KIM HEESANG PL/SQL 2 KIM HEESANG
11장. 1차원 배열.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
데이터 수정 데이터 수정 명령문을 이해한다. 데이터 삽입, 갱신 및 삭제 명령문을 이해한다.
Sql & DB
JA A V W. 03.
어서와 C언어는 처음이지 제14장.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
기초 SQL 문 SELECT 문과 같은 데이터베이스 조회 명령문을 이해한다.
Database 중고차 매매 DB 비즈니스IT 윤동섭.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
10장. SELECT명령문 : 통계함수 모든 열 선택(*) 2. SELECT 절의 수식
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
CHAP 21. 전화, SMS, 주소록.
제3장 함수와 배열수식 전진환
문성우 SQL 실습 Part Ⅰ 문성우.
Database Relational DML SQL.
Excel 일차 강사 : 박영민.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
14 뷰(View) 뷰의 개념 뷰 관리.
Chapter 10 데이터 검색1.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
수치해석 ch3 환경공학과 김지숙.
2014년 가을학기 손시운 지도 교수: 문양세 교수님 행렬과 배열 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
9장. spss statistics 20의 데이터 변수계산
어서와 C언어는 처음이지 제21장.
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
fastestslowest 실제 질의문에서 사용 타입 추천 인덱스 SELECT list Default
7 생성자 함수.
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

요약과 집계 각종 요약과 집계 기법을 이해한다. 각종 집계 함수를 이해한다. 구식 요약 방법인 COMPUTE와 COMPUTE BY 절을 이해한다. GROUP BY 절, HAVING 절, ROLLUP 및CUBE 연산자, GROUPING 함수 등을 이해한다.

요약과 집계 집계 함수 GROUP BY 절 3. 집계 연산자

1. 집계 함수 COUNT 함수 집계(aggregate) 함수: 값 집합에 대한 계산을 수행한 후 단일 값을 돌려주는 함수이며, GROUP BY 또는 COMPUTE (BY) 절이 포함된 SELECT 문에서 많이 사용된다. COUNT 함수는 행의 개수를 돌려준다. COUNT 함수의 구문

1. 집계 함수 COUNT 함수 구문 설명 *는 행 전체의 개수를 돌려준다(열에 NULL을 포함한 행들도 모두 포함). 일반적으로 *를 가장 많이 사용한다. expression은 text, ntext, image를 제외한 형식의 식으로, 집계함수와 하위 질의는 허용되지 않는다(대부분의 경우 열 이름이 옴). ALL은 NULL이 아닌 값을 가지는 모든 expression의 개수를 돌려 주고, DISTINCT는 NULL이 아닌 고유한 값을 가지는 expression의 개수를 돌려준다(생략할 때는 ALL 적용). WHERE 절을 만족하는 행이 없거나 전체적으로 행이 하나도 없을 경우, COUNT 함수는 유일하게 0을 돌려준다(다른 모든 집계 함수는 이 경우에 NULL을 돌려줌).

1. 집계 함수 COUNT 함수 COUNT 함수를 사용하는 예를 세 가지 살펴보자. 1 USE AdventureWorksLT; 2 GO 3 SELECT CustomerID, MiddleName 4 FROM SalesLT.Customer; 5 SELECT COUNT(*) AS 'COUNT(*)', 6 COUNT(ALL MiddleName) AS 'COUNT(ALL MiddleName)', 7 COUNT(DISTINCT MiddleName) AS 'COUNT(DISTINCT MiddleName)' 8 FROM SalesLT.Customer; 예제 1

1. 집계 함수 COUNT 함수

1. 집계 함수 SUM / AVG 함수 SUM, AVG : 열 값들의 합계 및 평균값을 돌려주는 함수이다. 구문

1. 집계 함수 SUM / AVG 함수 구문 설명 expression은 bit를 제외한 숫자 형식의 식으로, 집계 함수와 하위 질의는 허용되지 않는다(대부분의 경우 열 이름이 옴). ALL은 NULL이 아닌 값을 가지는 모든 expression의 합계 또는 평균 값을 돌려주고, DISTINCT는 NULL이 아닌 고유한 값을 가지는 expression의 합계 또는 평균값을 돌려준다(생략할 때는 ALL 적용). expression이 속한 데이터 형식 범주 중 가장 정확한 형(예: int, bigint, decimal(38, s), money 또는 float 형)으로 값을 돌려준다 (예: expression이 tinyint 형이라면 int 형으로 값을 돌려줌).

1. 집계 함수 SUM / AVG 함수 SUM/AVG 함수에 ALL/DISTINCT 적용 결과를 나타내보자. 예제 2 1 SELECT SUM(ALL ListPrice) AS 'SUM(ALL)', 2 SUM(DISTINCT ListPrice) AS 'SUM(DISTINCT)', 3 AVG(ALL ListPrice) AS 'AVG(ALL)', 4 AVG(DISTINCT ListPrice) AS 'AVG(DISTINCT)' 5 FROM SalesLT.Product;

1. 집계 함수 MIN / MAX 함수 MIN, MAX: 열 값들 중에서 최솟값 또는 최댓값을 돌려주는 함수 구문 구문 설명 expression은 bit를 제외한 숫자형, char, varchar 또는 datetime 형식의 식으로, 집계 함수와 하위 질의는 허용되지 않는다. ALL은 NULL이 아닌 값을 가지는 모든 expression 중 최솟값 또는 최댓값을 돌려준다. MIN과 MAX 함수에서 DISTINCT 키워드는 의미가 없으며, 오직 ISO 호환을 위해서만 존재한다. expression과 같은 형의 값을 돌려준다.

1. 집계 함수 MIN / MAX 함수 MIN과 MAX 함수를 사용해보자. 예제 3 1 SELECT MIN(ListPrice) AS MIN, MAX(ListPrice) AS MAX 2 FROM SalesLT.Product;

2. GROUP BY 절 사전 준비 GROUP BY 절: 데이터를 그룹화해서 값을 집계할 필요가 있는 경우, 예를 들어 학생들의 나이별, 출신 지역별, 성적별로 인원 수나 합계, 평균값 등을 구하는 경우에 필요하다. GROUP BY 절의 테스트를 위해 3장에서 사용했던 Test1DB의 orders 테이블에 데이터를 추가한다.

2. GROUP BY 절 사전 준비 예제 4 1 USE Test1DB; 2 --삽입 열: buyer_id, product_id, qty 3 INSERT INTO orders VALUES (1,1,20); 4 INSERT INTO orders VALUES (1,1,15); 5 INSERT INTO orders VALUES (1,2,150); 6 INSERT INTO orders VALUES (1,3,300); 7 INSERT INTO orders VALUES (1,3,100); 8 INSERT INTO orders VALUES (2,1,30); 9 INSERT INTO orders VALUES (2,2,100); 10 INSERT INTO orders VALUES (2,2,120); 11 INSERT INTO orders VALUES (2,3,150); 12 INSERT INTO orders VALUES (2,3,50); 13 SELECT * 14 FROM orders 15 ORDER BY buyer_id, product_id; 예제 4

2. GROUP BY 절 사전 준비

2. GROUP BY 절 GROUP BY 절 GROUP BY 절은 특정 열(들)을 그룹화하고 집계 및 요약하기 위해 SELECT 문에 포함하여 사용함 [그림 4-1]은 GROUP BY 절의 개념도이다. 왼쪽의 orders 테이블에 대해 buyer_id와 product_id 순으로 두 단계로 그룹화하고 각 그룹에 대해 SUM(qty)로 집계한 것이 오른쪽 테이블임 오른쪽 테이블에는 각 그룹이 하나의 행으로 요약되고, 각 그룹 내 qty 열 값들의 합계가 SUM(qty) 열에 나타남

2. GROUP BY 절 GROUP BY 절

2. GROUP BY 절 GROUP BY 절 ISO와 호환되는 단순 GROUP BY 절의 구문 simple_group_by_item은 그룹화할 열 또는 열을 참조하는 연산식 SELECT 문의 열 목록에 있는 집계식이 아닌 모든 열은 simple_ group_by_item에 반드시 나와야 한다. 대부분의 경우, SELECT 문의 열 목록에 집계 함수가 포함된다. ORDER BY 절을 이용하여 그룹화할 열(들)을 정렬해야 한다. 이것을 생략하면 그룹 자체가 정렬되지 않을 수 있다.

2. GROUP BY 절 GROUP BY 절 [그림 4-1]의 개념도를 구현해보자. - 8행의 ORDER BY 절을 생략하면 그룹 자체의 순서가 뒤죽박죽된다 (생략하고 실행해 보면 확인할 수 있다). 1 USE Test1DB; 2 SELECT buyer_id, product_id, qty 3 FROM orders 4 ORDER BY buyer_id, product_id; 5 SELECT buyer_id, product_id, SUM(qty) AS 'SUM(qty)' 6 FROM orders 7 GROUP BY buyer_id, product_id 8 ORDER BY buyer_id, product_id; 예제 5

2. GROUP BY 절 GROUP BY 절

2. GROUP BY 절 GROUP BY 절

2. GROUP BY 절 HAVING 절 HAVING 절: GROUP BY 절에 의해 만들어지는 행을 제약할 때 쓰임 WHERE 절이 SELECT 문에 의해 만들어지는 행을 제약하는 것과 비슷한 관계다. 구문 대부분의 경우, HAVING 절은 GROUP BY 절과 함께 쓰인다. search_condition은 WHERE 절의 검색 조건과 비슷하다. SELECT 문의 열 목록에 나오는 집계식을 포함할 수 있다는 점이WHERE 절과 다르다.

2. GROUP BY 절 HAVING 절 [예제 5]에서 만들어진 요약 행을 HAVING 절로 제약해보자. - 이에 의해 원래의 총 6개 행 중 3개 행만 결과 집합에 포함된다. 1 SELECT buyer_id, product_id, SUM(qty) AS 'SUM(qty)' 2 FROM orders 3 GROUP BY buyer_id, product_id 4 HAVING SUM(qty) >= 250 5 ORDER BY buyer_id, product_id; 예제 6

3. 집계 연산자 ROLLUP 연산자 정교하게 집계를 하려면 GROUP BY 절만으로는 부족한 경우가 있다. 이때 사용할 수 있는 것이 집계 연산자다. ROLLUP 연산자: GROUP BY 절의 일부로 사용되어, 집계 값을 요약하는 데 사용

3. 집계 연산자 ROLLUP 연산자 구문 simple_group_by_item들에 대해 단순 GROUP BY 집계 행뿐만 아니라, 오른쪽에서 왼쪽 순으로 집계 값들을 요약한 추가적인 행을 만들어준다. ROLLUP으로 요약된 행의 해당 열 값은 NULL이 된다. simple_group_by_item들의 순서는 ROLLUP 결과와 결과 집합의 행 수에 영향을 미친다.

3. 집계 연산자 ROLLUP 연산자 [그림 4-2]의 개념도를 구현해보자. 예제 7 1 SELECT buyer_id, product_id, SUM(qty) AS 'SUM(qty)' 2 FROM orders 3 GROUP BY ROLLUP(buyer_id, product_id); 예제 7

3. 집계 연산자 CUBE 연산자 CUBE 연산자: ROLLUP 연산자와 비슷하지만 더 완전하게 요약해줌 group_by_expression들의 모든 가능한 조합에 대해 집계 값들을 요약한 추가적인 행을 만들어준다. 구문 simple_group_by_item들에 대해 단순 GROUP BY 집계 행과 ROLLUP 요약 행 외에 교차 집계 행을 만들어준다. CUBE로 요약된 행의 해당 열 값은NULL이 된다.

3. 집계 연산자 CUBE 연산자

3. 집계 연산자 CUBE 연산자 [그림 4-3]의 개념도를 구현해보자. 1 SELECT buyer_id, product_id, SUM(qty) AS 'SUM(qty)' 2 FROM orders 3 GROUP BY CUBE(buyer_id, product_id); 예제 8

3. 집계 연산자 CUBE 연산자

3. 집계 연산자 GROUPING SETS 연산자 GROUPING SETS 연산자: ROLLUP과 CUBE 연산자가 고정된 방식으로 요약을 하는 것과 달리 좀 더 융통성 있게 요약을 해준다. 구문 ( )는 총합계를 생성한다. simple_group_by_item은 ROLLUP 또는 CUBE 연산자의 것과 같다. grouping_set_item_list는 하나 또는 그 이상의 ( ) 또는 simple_group_by_item이다.

3. 집계 연산자 GROUPING SETS 연산자 GROUPING SETS 연산자를 사용해보자. 1 SELECT buyer_id, product_id, SUM(qty) AS 'SUM(qty)' 2 FROM orders 3 GROUP BY GROUPING SETS(buyer_id, product_id, ()); 예제 9

3. 집계 연산자 GROUPING SETS 연산자 GROUPING SETS 연산자의 복잡한 예를 들어보자. 예제 10 1 USE AdventureWorks; 2 SELECT T.[Group] AS N'지역', T.CountryRegionCode AS N'국가' 3 ,DATEPART(yyyy,OrderDate) AS '년' 4 ,DATEPART(mm,OrderDate) AS '월' 5 ,SUM(TotalDue) AS N'매출액 합계' 6 FROM Sales.Customer C 7 INNER JOIN Sales.Store S 8 ON C.CustomerID = S.CustomerID 9 INNER JOIN Sales.SalesTerritory T 10 ON C.TerritoryID = T.TerritoryID 11 INNER JOIN Sales.SalesOrderHeader H 12 ON S.CustomerID = H.CustomerID 13 WHERE DATEPART(yyyy,OrderDate) = '2003' 14 GROUP BY GROUPING SETS( (T.[Group], T.CountryRegionCode), 15 (DATEPART(yyyy,OrderDate), DATEPART(mm,OrderDate)), ()) 16 ORDER BY T.[Group], T.CountryRegionCode 17 ,DATEPART(yyyy,OrderDate), DATEPART(mm,OrderDate); 예제 10

3. 집계 연산자

3. 집계 연산자 GROUPING 함수 ROLLUP, CUBE 또는 GROUPING SETS 연산자가 돌려주는 추가적인 요약 행에는 열이 요약되었음을 나타내는 NULL(들)이 포함되어 있다. 위 NULL은 집계열의 NULL과 혼동될 소지가 크다. SELECT 문의 열 목록에서 GROUPING 함수를 사용하면 된다. 구문

3. 집계 연산자 GROUPING 함수 구문 설명 column_expression은 요약 여부를 확인하고자 하는 열 또는 열을 포함하는 연산식이다. GROUPING 함수는 해당 열이 요약되었을 경우에는 1을 돌려주고, 요약되지 않았을 경우에는 0을 돌려준다. GROUPING 함수는 SELECT 문의 열 목록에서 필요에 따라 여러 번 사용될 수 있다.

3. 집계 연산자 GROUPING 함수 GROUPING 함수를 사용해보자. 1 USE Test1DB; 2 SELECT buyer_id, GROUPING(buyer_id) AS 'GROUPING(buyer_id)', 3 product_id, GROUPING(product_id) AS 'GROUPING(product_id)', 4 SUM(qty) AS 'SUM(qty)' 5 FROM orders 6 GROUP BY CUBE(buyer_id, product_id); 예제 11

3. 집계 연산자 GROUPING 함수