Your SlideShare is downloading. ×
그룹함수1    5
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

그룹함수1 5

900
views

Published on

sql 자료 2

sql 자료 2


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
900
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 그룹 및 집계 함수
  • 2. 학습 목표
    • 이 수업이 종료되면 학생들은
      • 그룹 함수를 설명할 수 있다 .
      • GROUP BY, HAVING 에 관해 설명할 수 있으며 , 이들 기능을 포함한 쿼리문을 작성할 수 있다
      • ROLLUP, CUBE, COMPUTE, COMPUTE BY 에 관해 설명할 수 있으며 , 이들 기능을 포함한 쿼리문을 작성할 수 있다 .
  • 3.
    • 그룹 및 집계 함수란 ?
      • 합계 , 평균 , 최고값 등 하나 이상의 레코드에서 선택된 컬럼 값을 대상으로 요약된 데이터를 만들어 내기 위해 사용하는 함수
    • 그룹 및 집계 함수를 사용하는 이유 ?
      • WHERE 문을 이용하여 특정 레코드의 특정 컬럼을 SELECT 하던 지금까지 배운 쿼리문을 더욱 확장하여 2 차적으로 가공하여 원하는 값을 추출하기 위함
      • SQL 은 집합지향적 언어 (set oriented language) 로 간단한 문장으로 해결 가능함
    그룹 및 집계 함수란 ?(1)
  • 4.
    • 그룹 및 집계 함수의 문법
    그룹 및 집계 함수란 ?(2) 그룹 및 집계함수 ([DISTINCT]expression) - DISTINCT 는 옵션사항으로 중복 값을 제거함 - expression 은 컬럼명 등으로 표현됨
  • 5.
    • SQL 서버에서 지원하는 그룹 및 집계 함수
    그룹 및 집계 함수의 종류 함수 매개변수 내용 AVG ([ALL|DISTINCT] expression) 평균 COUNT ([ALL|DISTINCT] expression) 표현식 전체나 각각의 개수 COUNT (*) 선택된 모든 행의 개수 MAX (expression) 최대값 MIN (expression) 최소값 SUM ([ALL|DISTINCT] expression) 합계 STDEV (expression) 표준편자 VAR (<<set>>[,Numeric Expression>>]) 분산
  • 6. AVG(), COUNT(), SUM() 함수 (1)
    • AVG(), COUNT(), SUM() 함수
      • 평균값 , 항목의 수 , 항목의 합을 계산
    SELECT price FROM titles SELECT SUM(price), COUNT(price), COUNT(*) FROM titles SELECT AVG(price), SUM(price)/COUNT(price), SUM(price)/COUNT(*) FROM titles SELECT AVG(price), AVG(DISTINCT price) FROM titles
  • 7. AVG(), COUNT(), SUM() 함수 (2)
    • AVG(), COUNT(), SUM() 함수 ( 계속 )
    SELECT type, AVG(advance), SUM(ytd_sales) FROM titles GROUP BY type ORDER BY type SELECT royalty FROM titles SELECT COUNT(royalty), COUNT(ALL royalty), COUNT(DISTINCT royalty), COUNT(*) FROM titles
  • 8. AVG(), COUNT(), SUM() 함수 (3)
    • AVG(), COUNT(), SUM() 함수 ( 계속 )
    SELECT city FROM authors SELECT COUNT(DISTINCT city) FROM authors SELECT SUM(royalty), SUM(ALL royalty), SUM(DISTINCT royalty) FROM titles
  • 9. MAX(), MIN() 함수 (1)
    • MAX(), MIN() 함수
      • 최대값 , 최소값을 SELECT 함
    SELECT ytd_sales FROM titles SELECT MAX(ytd_sales), MIN(ytd_sales) FROM titles SELECT MAX(zip), MAX(ALL zip), MAX(DISTINCT zip) FROM authors /*MAX 함수에서 DISTINCT 는 의미가 없음 */ SELECT MIN(zip), MIN(ALL zip), MIN(DISTINCT zip) FROM authors /*MIN 함수에서 DISTINCT 는 의미가 없음 */
  • 10. MAX(), MIN() 함수 (2)
    • MAX(), MIN() 함수 ( 계속 )
    SELECT AVG(advance), MAX(ytd_sales), MIN(ytd_sales) FROM titles WHERE type = 'business' SELECT advance, ytd_sales, ytd_sales FROM titles WHERE type = 'business'
  • 11. ISNULL(), WARNING
    • ISNULL() 함수와 같이 활용
    • SET ANSI WARNING ON/OFF
    SELECT AVG(ISNULL(price,0)), AVG(price) FROM titles SET ANSI_WARNINGS OFF SELECT AVG(price) FROM titles SET ANSI_WARNINGS ON SELECT AVG(price) FROM titles /* 결과창의 메시지 확인 */
  • 12.
    • ANSI-SQL
      • 현재의 표준
      • ms-SQL, ORACLE, SyBase 등 어떠한 DBMS 에서도 사용가능
    • T-SQL (Transaction-SQL)
      • 표준을 준수하면서 확장된 SQL
      • 좀 더 편하고 유연성 있게 활용 가능
    ANSI-SQL 과 T-SQL
  • 13. GROUP BY/HAVING (1)
    • GROUP BY
      • 테이블을 그룹으로 나눈다
    SELECT type, pub_id, price, ytd_sales FROM titles SELECT type, pub_id, 'avg' = AVG(price), 'sum' = sum(ytd_sales) FROM titles GROUP BY type, pub_id SELECT type, 'avg' = AVG(price), 'sum' = sum(ytd_sales) FROM titles GROUP BY type
  • 14. GROUP BY/HAVING (2)
    • GROUP BY / HAVING
      • 그룹화 연산 수행 후 조건 부여
      • SELECT 에 대한 WHERE 역할
    SELECT title_id, SUM(qty) AS [qty 의 합 ] FROM sales GROUP BY title_id SELECT title_id, SUM(qty) AS [qty 의 합 ] FROM sales GROUP BY title_id HAVING SUM(qty) >=30
  • 15. GROUP BY/HAVING (3)
    • GROUP BY / HAVING( 계속 )
    SELECT title_id, SUM(qty) AS [qty 의 합 ] FROM sales WHERE qty > 20 GROUP BY title_id HAVING SUM(qty) >=30 SELECT pub_id, total = SUM(ytd_sales) FROM titles GROUP BY pub_id HAVING COUNT(*) > 5
  • 16. GROUP BY/HAVING (4)
    • GROUP BY ALL
      • SELECT 에 WHERE 가 포함된 경우에만 의미 있음
      • WHERE 조건을 충족하지않는 레코드도 결과에 포함
    SELECT title_id, SUM(qty) AS [qty 의 합 ] FROM sales GROUP BY title_id SELECT title_id, SUM(qty) AS [qty 의 합 ] FROM sales WHERE qty > 20 GROUP BY ALL title_id SELECT title_id, SUM(qty) AS [qty 의 합 ] FROM sales WHERE qty > 20 GROUP BY title_id
  • 17. GROUP BY/HAVING (5)
    • GROUP BY ALL( 계속 )
    SELECT type, AVG(price) FROM titles WHERE royalty = 10 GROUP BY type SELECT type, AVG(price) FROM titles WHERE royalty = 10 GROUP BY ALL type
  • 18. COMPUTE/COMPUTE BY (1)
    • COMPUTE/COMPUTE BY
      • 상세 내역과 부분합을 구함
    SELECT type, avg(price) FROM titles GROUP BY type SELECT type, title_id, price FROM titles ORDER BY type COMPUTE avg(price) BY type
  • 19. COMPUTE/COMPUTE BY (2)
    • COMPUTE/COMPUTE BY( 계속 )
    SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance) SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance) BY type
  • 20. COMPUTE/COMPUTE BY (3)
    • COMPUTE/COMPUTE BY ( 계속 )
    SELECT type, pub_id, title_id, price FROM titles ORDER BY type, pub_id, title_id COMPUTE AVG(price) BY pub_id,type SELECT type, pub_id, title_id, price FROM titles ORDER BY type, pub_id, title_id COMPUTE AVG(price) BY title_id
  • 21. COMPUTE/COMPUTE BY (4)
    • COMPUTE BY, COMPUTE 문은 ANSI 호환성이 없어 새로운 테이블에 저장하는 등의 기능을 수행할 수 없다