检查表中超过1%的记录是否有错误?

时间:2011-02-04 18:15:38

标签: sql

我有一张表说,Table1和另外一张表说,ErrorTable1。 ErrorTable1具有在每个字段上应用验证后找到的Table1中的所有错误记录。任何人都可以告诉我,如何检查超过1%的Table1记录是错误吗?

2 个答案:

答案 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)