我有一个 Order
表中的列,包括 order_nbr
, create_ts
等等。
使用以下sql直接计算订单计数的日平均值
select avg(cnt)
from
(
select date(create_ts) dt, count(distinct order_nbr)
from order
group by date(create_ts)
)
如果我想绘制日均与季度的对比图呢?我如何估计一段时间内的平均值?出于演示目的,它将是一个条形图,以日均为y轴,季度(2017q3、2017q4、2018q1、2018q2)为x轴。
我所能想到的就是 avg
的 avg
在长达90天的运行窗口上。另一个想法是创造一个 Date
维度表。所以每个日期都有一个对应的季度名称。不过,我不清楚如何为此编写sql查询。
3条答案
按热度按时间xytpbqjk1#
要绘制日均v/s季度,基本上需要计算一个季度的日均值,并根据季度对它们进行分组。
要获得与日期对应的季度,可以使用quarter()函数。
尝试以下查询:
请注意,quarter()函数只返回特定年份的季度号。因此,您需要使用年数(yr)和季度数(qtr)来确定具体的季度。
vohkndzv2#
您只需向查询中添加一个部分,即可按日期范围筛选结果。应用where语句选择要筛选的字段和结果,然后使用and语句应用其他筛选器。
例如:
这意味着每个季度都需要一个单独的查询。
2eafrhcq3#
你可以用
YEAR()
以及QUARTER()
功能和分组?