我有一个数据库,其中包含有关游戏的信息,其列如下:game
我正在尝试创建一个查询,以返回具有以下条件的2列team和average_score:1. avg_score是球队在“客场”比赛中的平均得分数(球队名称出现在away_team列中)2.仅包括至少参加过30场比赛的球队。3.仅按平均进球数降序返回前10名球队。
我已经尝试过以下查询:
SELECT away_team AS team, round(avg(away_score),3) AS ave_goals
FROM results
WHERE date >= 2000-01-01 AND neutral = 'FALSE'
group by away_team HAVING COUNT(away_team) >=30
ORDER BY ave_goals DESC
LIMIT 10
此查询未提供期望的结果。我究竟做错了什么?感谢您的帮助。
SELECT away_team AS team, round(avg(away_score),3) AS ave_goals
FROM results
WHERE date >= '2000-01-01' AND neutral = 'FALSE'
GROUP BY away_team
HAVING COUNT(away_team) >=30
ORDER BY ave_goals DESC
LIMIT 10
date
条件不正确,我认为我们需要在您的中性列上添加upper()
函数。select * from
(select away_team as team
, round(avg(away_score),3) as ave_goals
from results
where cast(date as date) >= '2000-01-01' and upper(neutral)='FALSE'
group by away_team
having count(away_team) >= 30) t1
order by t1.ave_goals desc
limit 10