Archives of the TeradataForum
Message Posted: Fri, 14 Feb 2004 @ 01:01:35 GMT
| Subj: || || Re: A SQL Question |
| From: || || Victor Sokovin |
| ||I need to find the Average of two columns based on a third column. I can illustrate it like this. There is a FACT table called
FA_CDR_MEASUREMENTS. Its first column is Region-ID. Second Column is Market-ID. Third Column is Quantity. Fourth Column is Amount. I need to
calculate the Average for each Market-ID as Avg = Sum(Amount)/Sum(Quantity). That means the average needs to be calculated for each Market-ID
separately. Then, a final Average at the Region-Level is computed from all the averages calculated at the Market-level. This final average needs
to display as the 51st item in my select-list. (The above algorithm is a business requirement).|| |
| ||I cannot change anywhere in the SQL, because the other 50 items are such complex things and that work now. The GROUP BY is REGION-
Try to calculate Avg (I use your notation as above) as something like (SUM (Amount) OVER (PARTITITION BY Region_ID, Market_ID) /
(SUM(Quantity) OVER (PARTITITION BY Region_ID, Market_ID) ).
The per Region_ID average can then be calculated as SUM(Avg) / COUNT (distinct Market_ID), if that's what you mean by it. Hope this will work
when you put it all together in one GROUP BY Region_ID but I did not test it.