You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CASE表达式查询VIEW,计算赛马市场的平均赢赔率及位置赔率

解决赛马平均赢赔率与位置赔率的计算问题

先帮你梳理下原SQL里的问题:一是CASE表达式的用法逻辑不对,得把判断放在聚合函数内部才能筛选目标行计算平均值;二是语句存在语法缺失,比如CASE的闭合括号没写全。

下面是修正后完全符合你需求的SQL语句:

SELECT
  AVG(CASE WHEN Place = 1 THEN IndustrySP END) AS AvgWinOdds,
  AVG(CASE WHEN Place <= 10 THEN (IndustrySP - 1.0) / 5 END) AS AvgPlaceOdds
FROM dbo.GrandNational;

代码逻辑说明:

  • AvgWinOdds:仅当Place=1(即赛马夺冠)时,取该行的IndustrySP值,其他情况返回NULL;AVG()函数会自动忽略NULL,最终得到所有冠军赛马的平均赢赔率
  • AvgPlaceOdds:仅当Place<=10时,计算(IndustrySP - 1.0)/5作为位置赔率,其他情况返回NULL;同样通过AVG()忽略NULL,得到前10名赛马的平均位置赔率

执行后会得到类似这样的结果(一行两列):

AvgWinOddsAvgPlaceOdds
6.444.22

内容的提问来源于stack exchange,提问作者Dallas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 10:32:28