高级查询-选择,按条件求和,返回累计值

laximzn5  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(384)

用户预测给定比赛的团队赢家。根据预测的是哪支队伍以及预测是否正确,将根据所选队伍的胜算给出不同的分数。考虑以下两个sql表及其字段。



我想一个查询,其中总结了所有用户的赔率,如果预测是正确的(意思是 predictions.team_id 需要匹配 matches.match_winner )参加30号锦标赛。最终结果应该是这样的

马修预测正确匹配5和7(赔率3.4+2.4),总得分5.8分。
内维尔正确预测了第7场和第9场比赛(赔率2.4+2.0),总分4.4分

58wvjzkj

58wvjzkj1#

将聚集查询与条件 SUM 比如:

SELECT
    p.username,
    SUM(CASE WHEN m.match_winner = m.team_a THEN m.team_a_odds ELSE m.team_b_odds END)
FROM 
    predictions p
    INNER JOIN matches m
        ON p.match_id = m.id AND p.team_id = m.match_winner
WHERE p.tournament_id = 30
GROUP BY p.username
3df52oht

3df52oht2#

SELECT
  USERNAME,
  SUM(IF(CASE WHEN MATCH_WINNER = TEAM_A, TEAM_A_ODDS, TEAM_B_ODDS))
FROM
  PREDICTIONS
INNER JOIN MATCHES
  ON MATCH_ID = MATCHES.ID AND 
    TEAM_ID = MATCH_WINNER
GROUP BY USERNAME;

但是自从 Neville predicted correctly match 7 and 9 (odds 2.4 + 2.0), total 4.4 points 不满足。。。

SELECT
  USERNAME,
  SUM( TEAM_B_ODDS)
FROM
  PREDICTIONS
INNER JOIN MATCHES
  ON MATCH_ID = MATCHES.ID AND 
    TEAM_ID = MATCH_WINNER
GROUP BY USERNAME;

op总是求团队的赔率
虽然我相信你 Naville 案例错误。

相关问题