【发布时间】:2012-07-01 08:28:20
【问题描述】:
我正在处理一个问题,需要一些专家建议来解决这个问题,我的 sql 查询生成包含两列的输出,第一列显示 id(例如下表中的 abc-123),下一列显示对应的结果存储在db中的id是通过还是失败。
我需要实现,当分辨率通过时它应该显示成功尝试,在以下示例中,abc-123 第一次失败但 def-456 在下一次尝试中通过,因此成功率为 50%,现在计数器应该重置并转到下一行有通过,因此它应该显示 100%,再次当代码命中通过计数器重置然后进入下一个并显示 33%,因为最后有两个失败和一个通过,如何在 sql 中实现? (id 和 resolution 是列名)
**date** **id resolution**
6/6/2012 abc-123 fail 50%
6/7/2012 abc-456 pass
6/8/2012 abc-789 pass 100%
6/9/2012 abc-799 fail 33%
6/10/2012 abc-800 fail
6/1/2012 abc-900 pass
谢谢
【问题讨论】:
-
写 'o/p' 而不是 'output' 只是令人困惑。
-
是否有一些顺序或时间戳列来指示哪个项目在下一个之前?
-
嗨 Holger,我修复了输出,id 在升序列中,也是的,还有一个按升序排列的日期列。
-
嗨 Holger,我添加了一个按升序排列的日期列。
-
1) 您在程序上考虑问题,而 SQL 使用集合。 2) 你对数据的分析对我来说毫无意义。为什么要将 6/6 和 6/7 的记录组合在一起计算百分比?他们不共享一个共同的ID。同一天不能有多个决议吗?那么,您将如何按百分比对它们进行分组?