sql - 从表中获取摘要结果
问题描述
我有一张桌子:
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
是否可以编写这样的查询来检索 Result 是最差值的不同行?从上表中,我希望查询返回下一个数据集:
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
解决方案
您可以使用聚合:
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
推荐阅读
- javascript - React 功能组件 - 说它不是功能
- javascript - 如果找不到元素,将变量设置为 getElementById 的值或默认值的最简洁方法是什么?
- python - 从python中的类访问布尔值
- internet-explorer - 维基媒体地图在 Internet Explorer 上返回错误 429
- python - 阅读熊猫时如何克服Mac中的操作系统错误
- c# - 如何在设计模式下在 Windows 窗体组合框中添加多个项目?
- python - 我应该如何基于公共列组合表格?
- selenium-webdriver - 如何切换到 doctype html 中的元素?我使用切换到 iframe 并且不起作用
- python - SARIMAXResults 对象的 polynomial_trend 属性不包含拟合的趋势多项式系数
- kotlin - 枚举的位标志没有得到正确的结果