【发布时间】:2021-01-30 12:15:10
【问题描述】:
我可以计算一个月内的 id 数量,然后将其总结为 12 个月。我也使用此代码得到平均值。
select id, to_char(event_month, 'yyyy') event_year, sum(cnt) overall_count, avg(cnt) average_count
from (
select id, trunc(event_date, 'month') event_month, count(*) cnt
from daily
where event_date >= date '2019-01-01' and event_date < '2019-01-31'
group by id, trunc(event_date, 'month')
) t
group by id, to_char(event_month, 'yyyy')
结果如下所示:
ID| YEAR | OVER_ALL_COUNT| AVG
1| 2019 | 712 | 59.33
2| 2019 | 20936849 | 161185684.6
3| 2019 | 14255773 | 2177532.2
但是,我想修改它以获取一个月的所有 id 计数以及每月 id 计数的平均值。期望的结果是:
ID| MONTH | OVER_ALL_COUNT| AVG
1| Jan | 152 | 10.3
2| Jan | 15000 | 1611
3| Jan | 14255 | 2177
1| Feb | 4300 | 113
2| Feb | 9700 | 782
3| Feb | 1900 | 97
其中 id=1 的 1 月份总共有 152 个 id 计数,每天的平均 id 计数为 10.3。对于 id=2,一月计数为 15000,而 jan 的平均 id=2 计数为 1611。
【问题讨论】: