【发布时间】:2019-08-08 07:48:34
【问题描述】:
我正在尝试使用多个条件从不同的列中提取数据,但无法弄清楚如何,我相信这是我需要的相关子查询,并且尝试了几种不同的方法,但无法弄清楚。
我希望得到迈阿密热火队在以下类别中获胜的平均值 + 纽约尼克斯队在以下类别中的平均失利并将它们合并为一个平均值。
所以这是我对 Heat 的查询,它准确地检索了我想要的内容
SELECT
box_score.team_name,
ROUND(AVG(eFG),3) eFG,
ROUND(AVG(OPP_eFG),3) OPP_eFG,
ROUND(AVG(TOV_PCT),3) TOV_PCT,
ROUND(AVG(OPP_TOV_PCT),3) OPP_TOV_PCT,
ROUND(AVG(ORB_PCT),3) ORB_PCT,
ROUND(AVG(DRB_PCT),3) DRB_PCT,
ROUND(AVG(FTA_RATE),3) FTA_RATE,
ROUND(AVG(OPP_FTA_RATE),3) OPP_FTA_RATE
FROM box_score
WHERE team_name = 'Miami Heat' AND WIN_LOSS = 'W' AND game_date < '2019-03-07'
我也为尼克斯队带来了损失,这也导致了我想要的结果
WHERE team_name = 'New York Knicks' AND WIN_LOSS = 'L' AND game_date < '2019-03-07'
我的问题是试图将这两者结合到一个查询中,在其中我得到热火队获胜的平均值和尼克斯失利的平均值。所有这些信息都来自同一张表,我可以从 ID 号或姓名获取团队信息...如果有任何改变,我正在使用 SQLite
这是运行查询的结果,这是我正在寻找的具有平均值的一行数据...但是我希望将这些数字在热火队获胜和尼克斯队输球中的平均值合并为一行
热火平均胜率
eFG OPP_eFG TOV_PCT OPP_TOV_PCT ORB_PCT DRB_PCT FTA_RATE OPP_FTA_RATE
0.603 0.505 0.14 0.126 0.28 0.77 0.235 0.141
这些是尼克斯队输球的平均值
eFG OPP_eFG TOV_PCT OPP_TOV_PCT ORB_PCT DRB_PCT FTA_RATE OPP_FTA_RATE
0.568 0.602 0.146 0.136 0.225 0.787 0.222 0.235
我想将两者合并为每个类别的 1 个平均值
但是有什么办法可以让我得到平均值以从单独的列中提取数据?
在这种情况下,我对迈阿密热火队很感兴趣,所以我有上面的平均值,但我想做的是从热火队得到平均值到尼克斯队对应的相反数据(eFG 应该与其他团队的 opp_eFG 等等)...所以基本上我正在寻找以下的平均值:
热火 eFG 和 OPP_eFG 尼克斯
热火 OPP_eFG 和 eFG 尼克斯
热火 TOV_PCT 和 OPP_TOV_PCT 尼克斯
热火 OPP_TOV_PCT 和 TOV_PCT 尼克斯队
热火 FTA_RATE 和 OPP_FTA_RATE 尼克斯
热火 OPP_FTA_RATE 和 FTA_RATE 尼克斯
仍然希望得到 1 行作为结果
【问题讨论】:
-
WHERE team_name = "New York Knicks" -
请不要以使合理答案帖子无效的方式编辑问题帖子,修复旧帖子以提出问题并发布新问题。请在代码问题中给出minimal reproducible example--cut & paste & runnable code 加上所需的输出加上清晰的规范和解释。 PS 这似乎是一个常见的错误,人们希望加入一些聚合(每个都可能涉及加入),但他们错误地尝试先进行所有的加入,然后再进行所有的聚合。 Strange duplicate behavior from GROUP_CONCAT of two LEFT JOINs of GROUP_BYs
标签: sql sqlite inner-join correlated-subquery