게시일: Oct 24, 2011 12:9:38 AM
- SELECT 문장에서 GROUP BY 절을 사용할 경우에는 SELECT 리스트에 있는 항목 중 집계 함수를 제외하고는 모든 항목이 GROUP BY 절에 명시되어야 한다.
- 집계 함수를 조건에 사용하기 위해서는 WHERE 절이 아닌 HAVING 절에서 사용해야 한다.
select product_id
, sum(sales_volume) sales_volume
from (
select to_date('2011-10-01', 'yyyy-mm-dd') sales_dt, '1' product_id, 200 sales_volume from dual union all
select to_date('2011-10-01', 'yyyy-mm-dd') sales_dt, '2' product_id, 300 sales_volume from dual union all
select to_date('2011-10-01', 'yyyy-mm-dd') sales_dt, '3' product_id, 100 sales_volume from dual union all
select to_date('2011-10-02', 'yyyy-mm-dd') sales_dt, '1' product_id, 100 sales_volume from dual union all
select to_date('2011-10-02', 'yyyy-mm-dd') sales_dt, '2' product_id, 300 sales_volume from dual union all
select to_date('2011-10-02', 'yyyy-mm-dd') sales_dt, '3' product_id, 300 sales_volume from dual union all
select to_date('2011-10-03', 'yyyy-mm-dd') sales_dt, '1' product_id, 100 sales_volume from dual union all
select to_date('2011-10-03', 'yyyy-mm-dd') sales_dt, '2' product_id, 300 sales_volume from dual union all
select to_date('2011-10-03', 'yyyy-mm-dd') sales_dt, '3' product_id, 200 sales_volume from dual
)
--where sum(sales_volume) > 500 -- ORA-00934: group function is not allowed here
group by product_id
having sum(sales_volume) > 500
;
------------------------
PRODUCT_ID SALES_VOLUME
------------------------
2 900
3 600
------------------------