SQL-如何使用CASE表达式查询VIEW-查找列中的平均值

问题描述

我正在计算赛马市场的平均获胜赔率和平均排名赔率

我尝试了CASE表达式,因为仅在Place =1时才计算WinOdds的平均值,而在Place <= 10时才应包含PlaceOdds的平均值

SELECT 

  CASE WHEN Place = 1 THEN AVG(IndustrySP) AS AvgWinOdds,CASE WHEN Place <= 10 THEN AVG((IndustrySP - 1.0) / 5) AS AvgPlaceOdds

FROM dbo.GrandNational -- This is the `view` I want to query

我正在寻找获胜的平均赔率(当Place = 1时)

和位置的平均赔率(当位置

应返回如下内容

-- AvgWinOdds   -- AvgPlaceOdds

-- 6.44         -- 4.22

解决方法

您必须对CASE表达式求平均:

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