我有下面的SQL查询,它运行得很好,但是现在我想根据以下情况计算计数:
SELECT d.vseverity, v.vulnstatus, v.vtitleid, d.vtitle
FROM vulnsummary v
JOIN project p ON v.projid = p.projid
AND v.stagename = p.currentstage
JOIN datasets d ON v.vtitleid = d.datasetid
当前输出为:
现在我想以这种方式显示计数:
高(开放)-2
高(关闭)-0
中(开放)-1
中(封闭)-0
低(开)-3
低(封闭)-1
请帮我解决这个查询,谢谢
您需要先CROSS JOIN
确定不同的严重性和状态值集,然后再LEFT JOIN
对表进行设置,以允许您计算每个严重性/状态组合的值。没有示例数据,很难确定,但是这样的方法应该可以工作:
SELECT sv.vseverity, st.vulnstatus, COUNT(v.vseverity) AS count
FROM (
SELECT DISTINCT vseverity
FROM datasets
) sv
CROSS JOIN (
SELECT DISTINCT vulnstatus
FROM vulnsummary
) st
LEFT JOIN (
SELECT d.vseverity, v.vulnstatus
FROM vulnsummary v
JOIN project p ON v.projid = p.projid
AND v.stagename = p.currentstage
JOIN datasets d ON v.vtitleid = d.datasetid
) v ON v.vseverity = sv.vseverity AND v.vulnstatus = st.vulnstatus
GROUP BY sv.vseverity, st.vulnstatus
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句