使用JOIN进行SQL查询计数

斯坦·索尼(Chetan Soni):

我有下面的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章