我使用以下属性(示例)将测量结果存储在时间流中:
@2021-01-04 00:00:00 | DIMENSIONS | MEASURES
| domain: www.foo.com | uniq_users: 9
| layer: none | request_count: 11
| status: successful | bytes_sent: 18097
| cache_status: Hit |让我们假设这些指标是每天编写一个。如何查询数据才能获得特定域的请求计数度量的每月总和?
为了得到所询问的整个时间范围的总和,我可以这样做:
WITH per_day AS (
SELECT
time,
domain,
measure_value::double AS request_count
FROM
"database"."table"
WHERE
time between '2021-01-01 00:00:00' and '2022-01-01 00:00:00'
AND measure_name = 'request_count'
AND domain = 'www.foo.com'
ORDER BY time ASC
)
SELECT sum(request_count)
AS total
FROM per_day这将返回指定范围的总计。是否有办法(通过GROUP BY或类似的)获得每月总金额?
发布于 2022-02-03 16:25:13
在大多数SQL语言中,可以使用date_trunc ( 包括AWS时间流 )将时间戳截断到不同的精度。
在您的示例中,您希望将time截断到每月的精度:date_trunc('month', time)。然后,您可以根据这个变量和和request_count进行分组。
SELECT
date_trunc('month', time) AS month,
SUM(measure_value::double) AS request_count
FROM
"database"."table"
WHERE
time between '2022-01-01 00:00:00' and '2022-01-02 00:00:00'
AND measure_name = 'request_count'
AND domain = 'www.foo.com'
GROUP BY 1
ORDER BY month ASChttps://stackoverflow.com/questions/70728563
复制相似问题