我们有一张表格,其中包含来自不同节点的数据,其中一列的状态报告为“符合或不符合”,示例数据如下
我想以某种方式过滤表,如果节点上的任何检查显示不符合要求,则应将其标记为不符合,其余标记为符合。使用下面的查询,我能够做到
SELECT COUNT()AS总节点数,SUM(完全兼容= 0)AS非_兼容节点,SUM(完全兼容= 1)AS兼容节点FROM(选择节点,当SUM(Status ='Compliant')= COUNT()然后从your_table GROUP BY Node完全兼容1个ELSE 0 END
现在,我想按如下所示按部门对结果进行分组和拆分,我该如何实现
答案 0 :(得分:0)
我认为您正在寻找这个:
select dept,
count(*) as total_nodes,
sum(case when non_compliant_chk = 0 then 1 else 0 end) as compliant_nodes,
sum(case when non_compliant_chk > 0 then 1 else 0 end) as non_compliant_nodes
from (
select dept,
node,
sum(case when 'Non-Compliant' then 1 else 0 end) as non_compliant_chk
from your_table
group by dept,
node
) v
group by dept;
答案 1 :(得分:0)
只需对Brian的建议进行一些修改,我就能获得所需的结果
选择dept
,
count(*)为total_nodes,
sum(non_compatible_chk = 0然后1否则0结束的情况)作为Compliance_nodes,
总和(当non_compatible_chk> 0时为1,否则0结束)为non_compatible_nodes
来自(
选择dept
,
node
,
COUNT(当Compliance-Status
='Non- Compliant THEN 1 END'时的情况)'non_compatible_chk'
从表WHERE DOR> = DATE(NOW())-间隔7天
按Dept
分组,
Node
)v
按Dept
分组;