从表中获取摘要结果

voase2hg  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(313)

我有一张table:

TestType  TimeStamp             Result
1         2020-06-23 14:20:07Z  1
1         2020-06-23 14:20:07Z  2
1         2020-06-23 14:20:11Z  1
2         2020-06-23 14:20:11Z  1
2         2020-06-23 14:20:11Z  1
2         2020-06-23 14:20:11Z  1
3         2020-06-23 14:20:15Z  2
1         2020-06-23 14:20:23Z  2
1         2020-06-23 14:20:23Z  1

其中结果值为:

1 - Pass
2 - Fail

是否可以编写这样一个查询来检索结果最差的不同行?从上表中,我希望查询返回下一个数据集:

TestType  TimeStamp             Result
1         2020-06-23 14:20:07Z  2
1         2020-06-23 14:20:11Z  1
2         2020-06-23 14:20:11Z  1
3         2020-06-23 14:20:15Z  2
1         2020-06-23 14:20:23Z  2
neekobn8

neekobn81#

可以使用聚合:

select testType, timestamp, max(result) result
from mytable
group by testType, timestamp

如果需要处理更多值,则使用窗口函数可能更简单:

select testType, timestamp, result
from (
    select 
        t.*,
        row_number over(
            partition by testType, timestamp
            order by case result 
                when 3 then 1   -- fail
                when 7 then 2   -- pass
                when 1 then 3   -- unknown
            end
        ) rn
    from mytable t
) t
where rn = 1

相关问题