2014-02-27 182 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條件。