【问题标题】:Calculate cumulative percentage of other columns in SQL (Horse Racing)计算SQL中其他列的累积百分比(赛马)
【发布时间】:2014-02-27 14:32:56
【问题描述】:
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) 直到比赛当天,而不是累积显示百分比。在它使用place列计算累积显示百分比之前。

非常感谢,

【问题讨论】:

    标签: mysql sql


    【解决方案1】:
    SELECT original.*, @cumulative:=@cumulative+cum_show_pct 
    from (
        your select here
          ) original, (SELECT @cumulative:=0) sess_var
    

    上面的查询建议了一种使用会话变量汇总行值的常用方法。

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

    【讨论】:

      猜你喜欢
      • 2017-03-03
      • 2019-01-09
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      • 2021-10-15
      • 2018-09-08
      • 2021-09-23
      • 1970-01-01
      相关资源
      最近更新 更多