我正在尝试查看防病毒事件,这些事件将在24小时内显示AV和防火墙的事件数。基本上我试图在不同条件下对同一列进行求和。我已尝试在SUM函数中使用CASE WHEN语句,但它不会返回任何结果。
SELECT
events.arc_sourceHostName,
SUM(CASE WHEN events.arc_deviceEventClassId="fw" THEN events.arc_baseEventCount ELSE 0 END) AS "FWCount",
SUM(CASE WHEN events.arc_deviceEventClassId="av" THEN events.arc_baseEventCount ELSE 0 END) AS "AVCount"
FROM events
WHERE
events.arc_deviceVendor = "BitDefender"
AND
(events.arc_deviceEventClassId="fw"
OR
events.arc_deviceEventClassId="av")
GROUP BY
events.arc_sourceHostName
ORDER BY FWCount DESC
其他细节
希望看到主机名后跟AV事件的数量,然后是防火墙事件的数量。
Hostname AVCount FWCount
Host1 5 4
Host2 3 5
答案 0 :(得分:0)
此查询是否符合您的要求?
SELECT e.arc_sourceHostName,
SUM(CASE WHEN e.arc_deviceEventClassId = 'fw' THEN e.arc_baseEventCount ELSE 0 END) AS FWCount,
SUM(CASE WHEN e.arc_deviceEventClassId = 'av' THEN e.arc_baseEventCount ELSE 0 END) AS AVCount
FROM events e
WHERE e.arc_deviceVendor = 'BitDefender' AND
e.deviceEventClassId IN ('fw', 'av')
GROUP BY e.arc_sourceHostName
ORDER BY FWCount DESC;
如果这不起作用,那么没有行可能符合WHERE
条件。