我有游戏统计的表称为gamesstats
。
我给了一个球队(对我来说重要的部分是id),联赛和sesason。
现在我可以通过询问那些联盟和赛季都是给定的以及主队ID或访客团队ID是我给出的团队ID来查看球队使用我的比赛统计进行的比赛。
从那里我可以得到那个团队玩的游戏,并且分别通过HomeStat
和VisitorStat
这个游戏的统计数据。然后我对他们进行平均并得到关于该团队的图片。
现在的问题:
如何建立这三个芯片:一个球队的平均阵列(容易,做),为联盟平均的阵列(简单,就是不限制球队ID),并且在联盟中排名第二的球队是在这个特定的参数上(比如联盟中的第四(所有球队平均)在做2分投篮)。
SQL的一个位,所以你就会明白它的外观:
SELECT \"All Games\" as Flag, count(*) as Games, avg(s.P2M) as P2M, avg(s.P2A) as P2A, 100*avg(s.P2M)/avg(s.P2A) as P2P,
avg(s.P3M) as P3M, avg(s.P3A) as P3A, 100*avg(s.P3M)/avg(s.P3A) as P3P,
avg(s.FTM) as FTM, avg(s.FTA) as FTA, 100*avg(s.FTM)/avg(s.FTA) as FTP,
avg(s.OFFENSE) as OFFENSE, avg(s.DEF) as DEF, avg(s.TOT) as TOT,
avg(s.AST) as AST, avg(s.TO) as TurnO, avg(s.ST) as ST, avg(s.FV) as FV, avg(s.CM) as CM, avg(s.PTS) as PTS,
(avg(s.TOT) + avg(s.AST) + avg(s.ST) + avg(s.PTS) + avg(s.P2M) + avg(s.P3M) + avg(s.FTM) + avg(s.RV) + avg(s.FV))
- (avg(s.TO) + avg(s.P3A) + avg(s.P3A) + avg(s.FTA) + avg(s.AG) + avg(s.CM)) as EFF
FROM gamesstats AS gs, stats AS s
WHERE gs.$homeOrVisitor = s.ID
AND gs.HomeTeamID = $ESCteam
AND gs.SeasonStart = $ESCseason
AND gs.LeagueID = $ESCleague
我想,因为我们正在谈论巨大的表(30K +数据)更喜欢快速的解决方案。 如果需要,将进行编辑。
不是一切都很容易完成,只是两件事情。我仍然不能完成第三个,#联赛。 – Vadiklk 2011-05-31 07:40:23
这应该给你的想法:SELECT COUNT(*)FROM(SELECT AVG(something)as avg_smthing FROM'gamesstats' WHERE LeagueId = $ ESCleague AND SeasonStart = $ ESCseason GROUP BY HomeTeamId)AS tbl \t WHERE avg_smthing>(SELECT AVG (something)FROM'gamesstats' WHERE LeagueId = $ ESCleague和SeasonStart = $ ESCseason AND HomeTeamId = $ ESCteam); – XzKto 2011-05-31 07:57:43
如何选择所有不同的平均值?这会帮助我。 – Vadiklk 2011-05-31 17:31:26