我正在使用 MySQL 数据库。
风险因素有四种类型:严重、高、中、低
表包含如下数据:
id |
uaid |
attribute |
value |
time |
risk factor |
1 |
1234 |
Edge |
Exist |
16123 |
NONE |
2 |
1234 |
Edge |
Not Exist |
16124 |
CRITICAL |
3 |
1234 |
Edge |
Exist |
16125 |
NONE |
4 |
1237 |
Chrome |
Exist |
124745 |
NONE |
5 |
1237 |
Chrome |
Not Exist |
124759 |
HIGH |
所需的结果应如下所示:
Attribute |
Risk Factor |
UAID |
Failed Value |
Present Value |
Edge |
CRITICAL |
1234 |
Not Exist |
Exist |
Chrome |
HIGH |
1237 |
Not Exist |
Not Exist |
解释:
-
我们需要显示具有严重、中等、高、低风险因素的数据。
-
失败值 = 在风险因素至关重要时(最近一次),则该属性的值表示为失败值
-
当前值 = 它表示为数据库中该属性的当前值。
我尝试过两个sql查询的解决方案。一种用于获取风险系数等于关键的行。第二个用于获取每个独特属性的当前值。然后对两个查询中的数据进行一些格式化。
我正在寻找一种解决方案,可以根据要求消除数据格式化的额外开销。
Schema表(id,uaid,属性,值,时间,风险因子)
如果我理解正确,您想要的最后一个值是您指定的四个值之一(即不是'NONE'
)。窗口函数可能是最简单的解决方案:
select t.*
from (select t.*,
first_value(value) over (partition by uaid order by id desc) as current_value
from t
) t
where risk_factor <> 'NONE';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)