计算SQL(赛马)中其他列的累积百分比

时间:2014-02-27 04:04:45

标签: mysql sql

SELECT A.horse, A.datum, Sum(IIf([prev_place] = ---)) AS cum_show_ct, count(prev_place) AS cum_race_ct, (cum_show_ct/cum_race_ct) AS cum_show_pct INTO SHOW_PCT
FROM (SELECT PLACE_2.horse, PLACE_2.a_id, PLACE_2.place, PLACE_2.datum, b.place AS prev_place FROM PLACE_2 INNER JOIN PLACE_2 AS b ON PLACE_2.horse = b.horse WHERE (PLACE_2.datum > b.datum) ORDER BY place_2.horse, place_2.datum)  AS A
GROUP BY A.horse, A.datum;

所以这个表达式在下面的链接中创建了表。 http://postimg.org/image/ke08u94i3/

这样做的目的是计算马匹胜率(在过去的赛马比赛中直到比赛当天)。这个胜率只是马所展示的次数(完成1,2或3位)除以过去直到比赛当天的累积比赛次数(cum_show / cum_count)。我在下面还有一个PLACE_2表的链接,其中大部分计算数据来自。

Place_2表第1部分: http://postimg.org/image/68jy808vh/

Place_2表格第2部分(它有很多列): http://postimg.org/image/exmvc1c0l/

放置2表第3部分 http://postimg.org/image/cbaf0u7sd/

我想修改上面的脚本,以便每次表格中的完成列_2 = ---对于马或者马没有完成比赛,脚本将拉出累积的非完成百分比(cum_nonfinish / cum_count_of_races)直到比赛当天而不是累积显示百分比。在使用场所列计算累积展示百分比之前。

非常感谢你,

1 个答案:

答案 0 :(得分:0)

SELECT original.*, @cumulative:=@cumulative+cum_show_pct 
from (
    your select here
      ) original, (SELECT @cumulative:=0) sess_var

上面的查询提出了一种使用会话变量来总结行值的常用方法。

您可以将@cumulative:=@cumulative+cum_show_pct包装在任何所需的IF条件中。