본문 바로가기
연구_고민/PHP & MySql

GROUP BY

by DevG 2007. 8. 20.

계산 함수와 함께 각 그룹에 대해 하나의 행과 하나의 요약 정보를 생성


SELECT field_name From table_name


     WHERE search_conditions


          GROUP BY [ALL] aggregate_free_expression [, aggregate_free_expression...]]


          [HAVING search conditions]



- GROUP BY : 선택된 테이블의 각 그룹에 대한 요약 정보를 생성


- HAVING : 결과 행들에 대해 제약을 가함, 조건에 맞지 않는 그룹들을 제외한다.





* ANSI 표준 SQL에서의 요구사항


- fields_name 에 있는 모든 컬럼들은 반드시 GROUP BY 절에 나타나야 한다.


- HAVING 에 있는 컬럼은 반드시 하나의 값을 반환해야 한다.


- HAVING 을 포함한 질의는 반드시 GROUP BY 절을 포함해야 한다.



* Transact - SQL 에서는 ANSI 표준 SQL 보다 많은 옵션을 제공한다.


- GROUP BY 절은 수식을 포함할 수 있다.


- GOURP BY ALL은 WHERE절에서 제외된 그룹까지도 포함한다.


- ALL 은 SELECT문이 WHERE절을 포함할 때만 의미가 있다.





ex)

select title_id, copies_sold = sum(qty) from sales group by title_id


select title_id, copies_sold = sum(qty) from sales

    

     where ord_date between '1/1/1994' and '12/31/1994' group by ALL title_id