gpt4 book ai didi

mysql - 按类型对 mysql 结果进行分组 - 但仅按特定顺序

转载 作者:行者123 更新时间:2023-11-29 13:21:38 30 4
gpt4 key购买 nike

背景信息:我正在一个小型的私有(private) pingdom.com 克隆公司工作。

我有一个表格,其中包含状态检查网站是否可用以及检查日期。其中一些状态为“正常”,一些状态为“不正常”。现在我想按状态对行进行分组,但仅限同一“时间范围”中的行。

示例:

id   status   timestamp
1 ok 1234
2 ok 1235
3 not ok 1236
4 ok 1237

查询应将 ID 为 1-2、3 和 4 分成三组。最后我想显示测试的站点在线 2 小时、离线 1 小时、然后再次在线 1 小时。当然,我可以事后过滤结果,但我认为这对于大数据集来说效率非常低。

我完全不知道从哪里开始,因为你不能只按状态分组。对搜索词的简短帮助就足够了,英语不是我的母语。

最佳答案

尝试这个查询:

SELECT min( timestamp ) from_timestamp, 
max( timestamp ) to_timestamp,
max( timestamp) - min( timestamp ) + 1 how_long,
min( id ) from_id,
max( id ) to_id,
status
FROM (
SELECT t.id,
t.timestamp,
if(@last_status = status, @group, @group:=@group+1) group_number,
@last_status := status as status
FROM table1 t
CROSS JOIN (
SELECT @last_status := null, @group:=0
) as init_vars
ORDER BY t.timestamp
) q
GROUP BY group_number
ORDER BY from_timestamp

演示:--> http://www.sqlfiddle.com/#!2/2aa1e/10

关于mysql - 按类型对 mysql 结果进行分组 - 但仅按特定顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20751218/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com