Advertisement
niklep

Untitled

Aug 3rd, 2021
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.71 KB | None | 0 0
  1. WITH job_execution (id) AS(SELECT top 1 je.id
  2.     FROM  dbo.Job j JOIN dbo.JobExecution je ON j.id = je.idJob
  3.     WHERE j.id = 2086 ORDER BY id DESC
  4. ),
  5. files (f) AS (SELECT DISTINCT fe.VALUE
  6.     FROM dbo.TargetHost h
  7.     JOIN dbo.Scan s ON s.idTargetHost = h.id
  8.     LEFT JOIN dbo.XccdfScanResult r ON r.idScan = s.id
  9.     LEFT JOIN dbo.XccdfFileEnumeration fe ON r.idXccdfFile = fe.id
  10.     WHERE s.idJobExecution IN (SELECT id FROM job_execution)
  11. ),
  12. rules (r) AS (SELECT DISTINCT ruleNode.VALUE('(@id)[1]', 'varchar(max)')
  13.     FROM dbo.SyncFilesCache fc
  14.     CROSS apply fc.fileXml.nodes('(//*:Rule)[@severity="high"], (//*:Rule)[@severity="critical"]') AS T(ruleNode)
  15.     WHERE fc.filePath IN (SELECT f FROM files)
  16. )
  17.  
  18. SELECT COUNT(*) FROM (
  19.     SELECT Perc FROM (
  20.         SELECT connectionAddress,
  21.             CASE WHEN green+red > 0
  22.                 THEN
  23.                     CONVERT(
  24.                         DECIMAL(8,2),
  25.                         100*green/CAST(green+red AS DECIMAL(8,2))
  26.                 )
  27.             ELSE 0
  28.         END AS Perc
  29.         FROM (
  30.             SELECT s.id, s.idJobExecution,
  31.                 h.connectionAddress,
  32.                 COUNT(*) AS total,
  33.                 SUM(CASE WHEN r.RESULT = 0 AND rules.r IS NOT NULL THEN 1 ELSE 0 END) AS green,
  34.                 SUM(CASE WHEN r.RESULT = 1 AND rules.r IS NOT NULL THEN 1 ELSE 0 END) AS red,
  35.                 SUM(CASE WHEN r.RESULT = 2 AND rules.r IS NOT NULL THEN 1 ELSE 0 END) AS yellow
  36.             FROM dbo.TargetHost h
  37.                 JOIN dbo.Scan s ON s.idTargetHost = h.id
  38.                 LEFT JOIN dbo.XccdfScanResult r ON r.idScan = s.id
  39.                 LEFT JOIN rules ON r.xccdfRule = rules.r
  40.             WHERE s.idJobExecution IN (SELECT id FROM job_execution) AND h.connectionAddress LIKE '192.168.100%'
  41.             GROUP BY s.id, s.idJobExecution, h.connectionAddress
  42.         ) AS results LEFT JOIN dbo.FakeDNS d ON d.host = results.connectionAddress) AS res) AS res2 WHERE Perc < 80 AND Perc <> 0
  43.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement