Sql 检查表中是否有超过1%的记录出错?
我有一张桌子说,表1,还有一张桌子说,错误表1。ErrorTable1在对每个字段应用验证后,找到了Table1中的所有错误记录。有人能告诉我如何检查表1记录中是否有超过1%的记录是错误的吗?这应该给出百分比,并对您的数据进行一些假设: 从ErrorTable1中选择CASTSELECT COUNTDISTINCT Table1ID作为十进制/从Table1中选择CASTCOUNTID作为十进制 它基本上是查找表1中存在于ErrorTable1中的记录引用的任何单个实例,忽略测试。如果ErrorTable1中的一条或多条记录指向Table1中的一条记录,则它会将其作为单个错误记录计算百分比 编辑:我只是想到了别的。。。如果您关心的只是百分比是否大于或等于1,那么您可能不需要进行铸造操作。你会想测试它以确定,但如果它只是删除整数除法的余数,我不是100%确定,那么你可以将它们作为整数保留,并检查是否有正结果Sql 检查表中是否有超过1%的记录出错?,sql,Sql,我有一张桌子说,表1,还有一张桌子说,错误表1。ErrorTable1在对每个字段应用验证后,找到了Table1中的所有错误记录。有人能告诉我如何检查表1记录中是否有超过1%的记录是错误的吗?这应该给出百分比,并对您的数据进行一些假设: 从ErrorTable1中选择CASTSELECT COUNTDISTINCT Table1ID作为十进制/从Table1中选择CASTCOUNTID作为十进制 它基本上是查找表1中存在于ErrorTable1中的记录引用的任何单个实例,忽略测试。如果Error
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
如果表1中的每一行在ErrorTable1中可能有多个错误,则更改COUNTDISTINCT keycolumn表1中的每一行在ErrorTable1中是否有多条记录,或者它们是1对1?你只想通过计数进行比较吗?我在表1中有500条记录,经过验证后,我得到996条错误记录。但它只是一个垃圾数据。我想知道如何把两个计数的逻辑放在一起。像这样的转换可以得到小数点18,0。十进制除法规则可能给出正确的结果,但浮点可能更好