728x90
반응형

밑의 문제들은 SQL전문가 가이드 실습용 테이블을 활용하여 문제를 풀었다

 

SQL 전문가 가이드 실습용테이블.zip
1.03MB

 

GROUP BY, HAVING BY, WHERE 절 기본 개념은 아래의 페이지를 참조하자 

https://tantangerine.tistory.com/15

 

Oracle GROUP BY & HAVING 절 특징

GROUP BY 절 특징 GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT절에 집계함수를 사용. 집계함수의 통계정보는 NULL 값을 가진 행을 제외하고 수행한다. GROUP BY 절에서는 ALIAS 명을 사용할 수 없다. 집..

tantangerine.tistory.com

답은 흰색으로 처리하였습니다

 

1. 포지션별 인원수, 최대키, 최소키, 평균키를 출력하시오 이때 소수점 2번째 자리까지 구하시오

SELECT POSITION 포지션, COUNT(*) 인원수, COUNT(HEIGHT) 키대상,

MAX(HEIGHT) 최대키, MIN(HEIGHT) 최소키, ROUND(AVG(HEIGHT),2) 평균키

FROM PLAYER GROUP BY POSITION

 

 

2. K-리그 선수들의 포지션별 평균키를 구하는데, 평균키가 180 센티미터 이상인 정보만 출력하시오

SELECT POSITION 포지션, ROUND(AVG(HEIGHT),2) 평균키

FROM PLAYER GROUP BY POSITION HAVING AVG(HEIGHT) >= 180;

 

 

3. K-리그의 선수들 중 삼성블루윙즈(K02)와 FC서울(K09)의 인원수를 출력하시오.

단, 가장 효율적인 자원 활용을 생각하시오

 

SELECT TEAM_ID 팀ID, COUNT(*) 인원수

FROM PLAYER

WHERE TEAM_ID IN ('K09', 'K02')

GROUP BY TEAM_ID;

 

SELECT TEAM_ID 팀ID, COUNT(*) 인원수

FROM PLAYER

GROUP BY TEAM_ID

HAVING TEAM_ID IN ('K09', 'K02');

 

 

4. 포지션별 평균 키만 출력하는데, 최대키가 190cm 이상인 선수를 포함하고 있는 포지션의 정보만 출력한다.

SELECT POSITION 포지션, ROUND(AVG(HEIGHT),2) 평균키

FROM PLAYER GROUP BY POSITION HAVING MAX(HEIGHT) >= 190;

 

728x90
반응형
728x90
반응형

GROUP BY 절 특징

 

  • GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT절에 집계함수를 사용.
  • 집계함수의 통계정보는 NULL 값을 가진 행을 제외하고 수행한다.
  • GROUP BY 절에서는 ALIAS 명을 사용할 수 없다.
  • 집계함수는 WHERE 절에 올 수 없다.
  • 집계함수를 사용할 수 있는 GROUP BY 절보다 WHERE 이 먼저 수행된다.
  • WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거시킨다.
  • HAVING 절은 GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시 할 수있다.
  • GROUP BY 절에 의한 소그룹별로 만들어진 집계 데이터 중HAVING 에서 제한 조건을 두어 조건을 만족하는 내용만 출력.

HAVING 절 특징

 

  • HAVING 절은 WHERE 절과 비슷하지만 그룹을 나타내는 결과 집합의 행에 조건이 적용된다는 점에서 차이가 있다
  • HAVING 절과 GROUP 절의 순서를 바꾸어서 수행하더라도 문법 에러는 없다. 하지만 논리적으로 순서를 지키는 것을 권고
  • HAVING 절은 SELECT 절에서 사용되지 않은 칼럼이나 집계함수가 아니더라도 소그룹 집계함수를 이용한 조건을 표시을 가능

 


 

데이터의 효율적인 자원 활용 (WHERE 절과 HAVING 절의 관계)

 

  • GROUP BY 연산 전 WHERE 절에서 조건을 적용하여 필요한 데이터만 추출하여 GROUP BY 연산하는 방법
  • GROUP BY 연산 후 HAVING 절에서 필요한 데이터만 필터링하는 방법
  • 위의 두 가지 방법 중 WHERE 절에서 조건절을 적용하여 GROUP BY의 계산 대상을 줄이는 것이 효율적인 자원 사용이다

 


SELECT 문장 실행 순서

 

  1. 발췌대상 테이블을 참조한다 (FROM)
  2. 발췌대상 데이터가 아닌 것은 제거한다. (WHERE)
  3. 행들을 소그룹화 한다 (GROUP BY)
  4. 그룹핑된 값의 조건에 맞는 것만을 출력한다 (HAVING)
  5. 데이터 값을 출력/계산한다 (SELECT)
  6. 데이터를 정렬한다 (ORDER BY)

 

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel