我在从几个分区的日表中获取平均值时遇到了一个问题。我们每天都有分区的表。我想有一个SQL查询,计算平均为N天的请求按国家分组。
所以这就是模式:
日期(字符串)国家(字符串)请求(整数)
到目前为止,我拥有的是:
SELECT country, avg(req) as AvgReq
FROM TABLE_DATE_RANGE([thePartitionedTable_],
DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), CURRENT_TIMESTAMP())
GROUP BY country
当然,这在1天内有效,但当我尝试2天或更多天时,数据会出现偏差。我的逻辑中有什么问题?在这种情况下,AVG()函数是如何工作的?我也需要按日期分组吗?
所以我想要thePartitionedTable_today的日均和日均thePartitionedTable_yesterday,然后我想要它们的平均值,如果这是有意义的话。因此,如果thePartitionedTable_today在尼日利亚的日平均值为2,thePartitionedTable_yesterday在尼日利亚的日平均值为3,那么这两天的尼日利亚的平均值应该是2.5。我真的很欣赏你的时间!
发布于 2018-02-16 05:46:21
使用标准SQL:
with avg_byday AS (
SELECT
country,
AVG(req) AS req_avg
FROM
`thePartitionedTable_*`
GROUP BY
_TABLE_SUFFIX,
country)
SELECT
country,
AVG(req_avg)
FROM
avg_byday
GROUP BY
country
子查询还将为您提供每个国家每天的平均请求。
https://stackoverflow.com/questions/48815729
复制相似问题