我有一个来自SQLAnywhere(Netbackup)的表,我试图以一种可以帮助Shell脚本确定是否需要重新运行的方式来查询,而我们不需要。 Netbackup自然会尝试重新运行该作业,因此它可能会失败几次,然后在12小时窗口内成功运行。我正在呼叫的是domain_job,我试图在12小时内查询特定的状态码(4275),只要在12小时内有3个状态码,而没有0返回码。我需要它来列出此输出,以便脚本可以运行它。我尝试了嵌套选择,但计数似乎有误。
此选择返回数据,但我无法弄清楚如何最好地插入状态码的数量,以确保自0以来3次备份均失败,并显示最新的作业ID,因此可以由Shell脚本重新运行。也不确定计数是否正确返回。
SELECT a.clientName, a.job_count, MAX(id)
FROM (SELECT clientName, COUNT(statusCode) AS job_count
FROM domain_job
where statusCode = 4275
AND type = 28
AND (policyName LIKE '%vip%' OR policyName LIKE '%VIP%')
AND datediff(HOUR, UTCBigIntToNOMTime(endTime), getdate()) < 12
GROUP BY clientName
ORDER BY clientName, job_count DESC ) a, domain_job b
where a.clientName=b.clientName
AND b.statusCode = 4275
AND b.type = 28
AND (b.policyName LIKE '%vip%' OR b.policyName LIKE '%VIP%')
AND datediff(HOUR, UTCBigIntToNOMTime(b.endTime), getdate()) < 12
GROUP BY client_name
此选择有效,但似乎令人费解。
SELECT COUNT(*) AS "Failures",
d.clientName AS "Client"
FROM domain_Job d
WHERE clientName IN (
SELECT clientName
FROM domain_Job c
WHERE c.id IN (
-- Get the Max Job ID with out filtering for Status Code.
-- This will then be used to get the final result of backups
-- We will see if backups have reran successfully or not.
SELECT MAX(b.id)
FROM domain_job b
WHERE b.clientName IN (
-- Get the initial client names of backups that have failed in
-- XX hours ago with 4275, this is the seed.
SELECT a.clientName
FROM domain_job a
WHERE a.statusCode = 4275
AND a.type = 28
AND (a.policyName LIKE '%vip%' OR a.policyName LIKE '%VIP%')
AND datediff(HOUR, UTCBigIntToNOMTime(a.endTime), getdate()) < 12
GROUP BY a.clientName
)
AND b.type = 28
AND (b.policyName LIKE '%vip%' OR b.policyName LIKE '%VIP%')
AND datediff(HOUR, UTCBigIntToNOMTime(b.endTime), getdate()) < 12
GROUP BY b.clientName
)
AND c.statusCode = 4275
AND c.type = 28
AND (c.policyName LIKE '%vip%' OR c.policyName LIKE '%VIP%')
AND datediff(HOUR , UTCBigIntToNOMTime(c.endTime), getdate()) < 12
)
AND datediff(HOUR , UTCBigIntToNOMTime(d.endTime), getdate()) < 12
GROUP BY "Client" ```
尝试从查询a中删除“ ORDER BY clientName,job_count DESC”