2014-02-27 181 views
1
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/计算SQL中其他列的累积百分比(赛马)

这样做是为了计算一匹马的胜率(在过去的比赛中,直到当天的比赛)。这个胜率仅仅是一匹马已经显示(完成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/

我想修改上述脚本,以便每当表格中的完成列place_2 = ---对于马匹或者马未完成比赛时,脚本将提取累积未完成百分比(cum_nonfinish/cum_count_of _races)直到比赛日,而不是累计展示百分比。在它使用地方栏来计算累计展示百分比之前。

太感谢你了,

回答

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

上面查询建议一个共同的方法使用会话变量来概括行值。

您可以将@cumulative:[email protected]+cum_show_pct换成任何所需的IF条件。