2014-06-07 4 views
0

표 비용 롤업 총 사용 :쿼리 내에서

Item | Cost 
Car | 10 
Cat | 2 
Dog | 3 
Fish| 1 

그것은 당 행 쿼리 내에서 합계를 사용할 수 있습니까?

SELECT Item, Cost, Cost/sum(cost) "Percent" from Costs where ... 

는 얻을 :

Item | Cost | Percent 
Car | 10 | 0.625 
Cat | 2 | 0.125 
Dog | 3 | 0.1875 
Fish| 1 | 0.0625 

이것은 단순한 예입니다. 내 쿼리가 훨씬 복잡해지기 때문에 "전체 선택 (비용)"을 얻기 위해 전체 테이블 스캔을하지는 않을 것입니다. 그룹화/롤업을 사용하여이 작업을 수행 할 수 있습니까?

+0

하는의는 비용 테이블 행 만 있고, 당신의 복잡한 쿼리가 10을 걸러 가정 해 봅시다 결과 집합 행. 10 행이나 백만의 합이 필요합니까? –

답변

2

RATIO_TO_REPORT 함수를 사용하면 합계를 계산하지 않고도 비율을 얻을 수 있습니다.

SQL Fiddle

검색어 1 :

select item, 
     cost, 
     ratio_to_report(cost) over() as percent 
from costs 

Results :

| ITEM | COST | PERCENT | 
|------|------|---------| 
| car | 10 | 0.625 | 
| cat | 2 | 0.125 | 
| dog | 3 | 0.1875 | 
| fish | 1 | 0.0625 |