繁体   English   中英

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

[英]Calculate cumulative percentage of other columns in SQL (Horse Racing)

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/

我想修改上面的脚本,以便每次对于马表place_2 = ---的完成列-或该马没有完成比赛时,该脚本都会拉出累积的未完成百分比(cum_nonfinish / cum_count_of_races),直到比赛当天,而不是累积的演出百分比。 在使用位置列计算累计放映百分比之前。

非常感谢,

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

上面的查询提出了一种使用会话变量对行值求和的通用方法。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM