我有一個簡單的表xx
如下:如何獲得SQL(多級聚合)中的平均總和?
rdate date
rtime time
rid integer
rsub integer
rval integer
primary key on (rdate,rtime,rid,rsub)
,我想要得到的和的值的平均值(所有時間)(所有IDS)。
通過示例表的方式,我有(有連續的相同值削除的可讀性):
rdate rtime rid rsub rval
-------------------------------------
2010-01-01 00.00.00 1 1 10
2 20
2 1 30
2 40
01.00.00 1 1 50
2 60
2 1 70
2 80
02.00.00 1 1 90
2 100
2010-01-02 00.00.00 1 1 999
我能得到我想要用的款項:
select rdate,rtime,rid, sum(rval) as rsum
from xx
where rdate = '2010-01-01'
group by rdate,rtime,rid
這給了我:
rdate rtime rid rsum
-------------------------------
2010-01-01 00.00.00 1 30 (10+20)
2 70 (30+40)
01.00.00 1 110 (50+60)
2 150 (70+80)
02.00.00 1 190 (90+100)
如預期的那樣。
現在我想的是,也將跨時間維度平均那些值查詢,給我:
rdate rtime ravgsum
----------------------------
2010-01-01 00.00.00 50 ((30+70)/2)
01.00.00 130 ((110+150)/2)
02.00.00 190 ((190)/1)
我使用z/OS的DB2,但如果可能的話我寧願標準的SQL 。
我沒有得到任何行從該回來了,我正要悻悻抱怨時,我注意到你已經把在'2010-06-01'出於某種原因而不是'2010-01-01'。然後我發現我在問題中做了同樣的事情:-) D'Oh!一旦我解決了(在問題和所有答案日期),它工作得很好。 – paxdiablo 2010-06-10 03:42:24
哈哈,最後很高興的事情。 :) – Amber 2010-06-11 02:47:07