一个站点有多个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查询应该是什么?
最佳答案
您可以使用ELT
和conditional 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/