我有一张表说,Table1和另外一张表说,ErrorTable1。 ErrorTable1具有在每个字段上应用验证后找到的Table1中的所有错误记录。任何人都可以告诉我,如何检查超过1%的Table1记录是错误吗?
答案 0 :(得分:1)
这应该为您提供百分比,并对您的数据做出一些假设:
SELECT CAST((SELECT COUNT(DISTINCT Table1ID) FROM ErrorTable1) AS DECIMAL) / CAST(COUNT(ID) AS DECIMAL) FROM Table1
它基本上是在查找表1中存在于ErrorTable1中的记录的任何单个实例,忽略测试。如果ErrorTable1中的一个或多个记录指向Table1中的记录,则将其计为单个“错误记录”以达到百分比。
编辑:我只是想到了别的......如果您关心的是百分比是否大于或等于1那么您可能不需要进行投射操作。你想要测试它是肯定的,但是如果它只是将余数放在整数除法上(我不是100%肯定)那么你可以将它们保留为整数并检查结果是否正确。
答案 1 :(得分:1)
SELECT
'More than 1% fail', 100.0 * E.ErrCnt / T.RowCnt AS ErrorPercent
FROM
(SELECT COUNT(*) AS ErrCnt FROM ErrorTable1) E
CROSS JOIN
(SELECT COUNT(*) AS RowCnt FROM Table1) T
WHERE -- can use 1.0 ... > 0.01 too
100.0 * E.ErrCnt / T.RowCnt > 1
如果table1中的每一行在ErrorTable1中都有多个错误
,请更改COUNT(DISTINCT keycolumn)