一个站点有多个pod,每个pod都有一个状态。数据如下表所示:

Store   POD Status
A001    S101    OK
A001    S102    OK
A001    S103    OK
A002    S201    OK
A002    S202    Critical
A002    S203    OK
A003    S301    OK
A003    S302    OK
A003    S303    Critical
A004    S401    Warning
A004    S402    OK
A004    S403    OK
A005    S501    OK
A005    S502    OK
A005    S503    OK
A006    S601    OK
A006    S602    OK
A006    S603    Critical
A007    S701    OK
A007    S702    OK
A007    S703    OK

计算站点状态,以便如果站点中的任何一个播客具有临界状态,则站点应报告临界状态,否则如果站点中的任何一个播客具有警告,则应报告警告,
Expected Output
A001 OK
A002 Critical
A003 Critical
A004 Warning
A005 OK
A006 Critical
A007 OK

要获得预期的输出,sql查询应该是什么?

最佳答案

您可以使用ELTconditional aggregation

SELECT Store, ELT(MAX(CASE WHEN Status='OK' THEN 1
                       WHEN status='Warning' THEN 2
                       WHEN status='Critical' THEN 3 END)
            , 'OK', 'Warning', 'Critical') AS output
FROM tab
GROUP BY Store;

DBFiddle Demo

关于mysql - 用于聚合结果的SQL查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50494370/

10-09 15:15
查看更多