或者我做错了什么。我有一项服务可以计算它收到的请求。请求具有平台、执行它们的客户端应用程序的版本以及其他标签。当服务重新启动时(在更新时很少发生这种情况,指标会被重置)。
因此,我想计算最近时间范围内来自每个平台的查询百分比,并执行以下操作:
SELECT SUM("received") as "received"
FROM (
SELECT NON_NEGATIVE_DIFFERENCE(MAX("received")) as "received"
FROM "http_metrics"
WHERE time >= now() - 4h GROUP BY time(1s)
) GROUP BY "platform";
返回:
...
tags: platform=ios
time received
---- --------
1970-01-01T00:00:00Z 581
tags: platform=unknown
time received
---- --------
1970-01-01T00:00:00Z 12310
tags: platform=web
time received
---- --------
1970-01-01T00:00:00Z 6196
在不分组的情况下做同样的事情:
SELECT SUM("received") as "received"
FROM (
SELECT NON_NEGATIVE_DIFFERENCE(MAX("received")) as "received"
FROM "http_metrics"
WHERE time >= now() - 4h GROUP BY time(1s)
);
返回:
time received
---- --------
1970-01-01T00:00:00Z 8274
这显然是不正确的,因为“未知”平台无法接收比所有请求更多的请求。但我什至不知道哪个是不正确的,完全的还是按平台的,或者两者兼而有之?
如何正确计算请求的总数和按平台的总和?

