今天在测试自己写的sql时发现了一下问题,还找了一会才反应过来,记录一下,省的以后不长心,再出这种低级错误。
这是我的存储过程,定义了一张表如下所示
刚开始定义类型的时候,我想,fault_count跟statue左右都是对数据统计的count,肯定是int所以 我就定义成了int,然后下图展示了我最终返回结果的计算方式
最后计算出来死活都是0,刚开始都没在意,因为逻辑没问题嘛。最后在详细测试数据准确性的时候发现,Statue就没计算正确,一直都是0。我就很纳闷,反反复复看数据,发现就是存储过程这块的问题。
之后我就怀疑是不是因为我定义为int的原因,然后我就把类型改成了float。发现可以正常计算。
事后我就想明白了,因为除出来是后他将类型转换为int,当除的结果为0.XXX时,自然而然就是返回0啦,最后写了一个sql测试了一下我的猜想。
以前好像真的没注意过这种问题,以后记住啦。