OPEN between Secret

SQL 기본 및 활용 (집계함수(GROUP BY, HAVING), ORDER BY) 본문

DB/SQLD

SQL 기본 및 활용 (집계함수(GROUP BY, HAVING), ORDER BY)

해가꿈꾸는달 2015. 3. 30. 12:52
반응형

집계함수(Aggregate Function)



- 다중행 함수 중 한개.

- 여러 행들의 그룹이 모여서 그룹당 하나의 결과를 돌려주는 함수

- SELECT 절, HAVING 절 , ORDER BY 절 에 사용가능.

- 테이블 전체 집계를 위해 GROUP BY 절 없이도 집계 함수를 사용할 수 있다.

- 집계 함수는 그룹에 대한 정보를 제공하므로 주로 숫자 유형에 사용되지만,

MAX, MIN, COUNT 함수는 문자, 날짜 유형에도 적용 가능.

- 테이블 전체가 하나의 그룹이 되는 경우에는 GROUP BY 절 없이 단독으로 사용 가능.







GROUP BY 절



-> SQL문에서 FROM 절과 WHERE 절 뒤에 옴.

-> GROUP BY 절과 HAVING 절의 순서를 바꾸더라도 문법 에러가 X, 결과물은 같다.

-> 그러나 논리적으로 순서를 지키는게 좋음

-> 데이터들을 작은 그룹으로 분류 , 소그룹에 대한 항목별로 통계 정보를 얻을때 추가로 사용됨.

-> GROUP BY 절을 통해 소그룹을 정한 후, SELECT 절에 집계 함수를 사용함.

-> GROUP BY 절은 SELECT와 달리 ALIAS를 사용할수 없음.




GROUP BY 와 HAVING 절


-> 집계 함수의 통계 정보는 NULL 값을 가진 행을 제외 함.

-> 집계 함수는 WHERE 절에 올 수 없다.

-> 예전에는 GROUP BY 절에 명시된 칼럼 순서대로 오름차순 정렬이 자동으로 됐는데

지금은 ORDER BY 을 명시해야 정렬이 수행됨.

 

 

 

 





HAVING 절


-> HAVING 은 WHERE 절과 비슷하지만 GROUP BY 절에 의해 만들어진 소그룹에 대한 조건이 적용됨.

-> HAVING 절은 SELECT 절에 사용되지 않은 칼럼이나 집계 함수가 아니더라도 GROUP BY절의 

기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시할 수 있음

 

 

 

 





ORDER BY 정렬!!!



- SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특 정 칼럼을 기준으로 정렬하여 출력하는데 사용함.

- COLUMN 명 대신 SELECT 에서 사용한 ALIAS 나 칼럼 순서를 나타내는 정수도 가능

- 기본적으로 오름차순 정렬.

- ORACLE은 NULL 값을 가장 큰 값으로 SQL Server은 최소값으로 간주함.





EX) 


키가 큰 순서대로, 키가 같은 경우 백넘버 순으로 ORDER BY 절을 적용하고, 키가 NULL 인 데이터는 제외


SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 

FROM PLAYER

WHERE HEIGHT IS NOT NULL

ORDER BY HEIGHT DESC, BACK_NO ASC;

 

 

 

 





GROUP BY 와 ORDER BY 가 같이 있을때 순서





  !! 참고해보기?

FROM 절에 정의되지 않은 테이블의 칼럼을 WHERE 절, GROUP BY절, HAVING 절 , SELECT 절, ORDER BY 절에서 사용하면 에러가 발생한다.

그러나, ORDER BY 절에는 SELECT 목록에 나타나지 않은 문자형 항목이 포함될수 있다

(단! SELECT DISTINCT를 지정하거나, GROUP BY 절이 있거나, SELECT 문에 UNION 연산자가 있으면 열 이름이 SELECT 목록에 나타나야 한다.)

관계형 데이터베이스가 데이터를 메모리에 올릴 때 행 단위로 모든 칼럼을 가져오게 되므로, SELECT 절에서 일부 칼럼만 선택하더라도 ORDER BY 절에서 메모리에 올라와 있는 다른 칼럼의 데이터를 사용할수가 있어서!



  SELECT 문장은 

FROM 절 -> WHERE 절 -> GROUP BY 절 -> HAVING 절 -> SELECT 절 -> ORDER BY 절 

순서로 실행된다.




출처 : The Guide for SQL Professional Sql 전문가 가이드 2013 Edition


반응형

'DB > SQLD' 카테고리의 다른 글

SQL 활용(STANDARD JOIN)  (0) 2015.03.30
SQL 기본 및 활용(JOIN)  (0) 2015.03.30
SQL 기본 및 활용  (0) 2015.03.09
SQL 기본 및 활용(where, function )  (0) 2015.03.05
Sql 기본 및 활용(DDL, DML, TCL)  (0) 2015.03.05