Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

그룹함수1 5

1,185 views

Published on

sql 자료 2

  • Be the first to comment

  • Be the first to like this

그룹함수1 5

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

×