Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 检查表中是否有超过1%的记录出错?_Sql - Fatal编程技术网

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

Sql 检查表中是否有超过1%的记录出错?,sql,Sql,我有一张桌子说,表1,还有一张桌子说,错误表1。ErrorTable1在对每个字段应用验证后,找到了Table1中的所有错误记录。有人能告诉我如何检查表1记录中是否有超过1%的记录是错误的吗?这应该给出百分比,并对您的数据进行一些假设: 从ErrorTable1中选择CASTSELECT COUNTDISTINCT Table1ID作为十进制/从Table1中选择CASTCOUNTID作为十进制 它基本上是查找表1中存在于ErrorTable1中的记录引用的任何单个实例,忽略测试。如果Error

我有一张桌子说,表1,还有一张桌子说,错误表1。ErrorTable1在对每个字段应用验证后,找到了Table1中的所有错误记录。有人能告诉我如何检查表1记录中是否有超过1%的记录是错误的吗?

这应该给出百分比,并对您的数据进行一些假设:

从ErrorTable1中选择CASTSELECT COUNTDISTINCT Table1ID作为十进制/从Table1中选择CASTCOUNTID作为十进制

它基本上是查找表1中存在于ErrorTable1中的记录引用的任何单个实例,忽略测试。如果ErrorTable1中的一条或多条记录指向Table1中的一条记录,则它会将其作为单个错误记录计算百分比

编辑:我只是想到了别的。。。如果您关心的只是百分比是否大于或等于1,那么您可能不需要进行铸造操作。你会想测试它以确定,但如果它只是删除整数除法的余数,我不是100%确定,那么你可以将它们作为整数保留,并检查是否有正结果

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。十进制除法规则可能给出正确的结果,但浮点可能更好