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)直到比赛当天而不是累积显示百分比。在使用场所列计算累积展示百分比之前。
非常感谢你,
答案 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条件中。