请查询SQL查询

时间:2011-11-14 20:16:37

标签: sql

我还在掌握sql的基础知识。任何帮助非常感谢。

该表是TeamRankings。列如下:

score | qualities_id | team_id | year | source_id

团队在特定年份的不同品质方面得分。请注意,可以为给定团队分配多个分数(每个分数来自不同的来源)。同样,给定的团队在给定年份可能根本没有任何分数。

问题在于:

鉴于单一质量,团队列表和年份列表,我希望为每个团队/年找到一个单独的分数。如果给定的团队/年有多个来源的分数,我想选择具有最低source_id的分数。

我猜这样做的方法是GROUP BY team_id,year,quality_id,然后以某种方式筛选出更高的源ID。但我对过滤发生的地方感到困惑。它不在HAVING子句或WHERE子句中,对吗?我需要子查询吗?

2 个答案:

答案 0 :(得分:3)

您可以加入表格的分组版本:

select t.* from TeamRankings t
inner join (select team_id, year, min(source_id) as minSource
            from TeamRankings group by team_id, year) f
on t.team_id = f.team_id AND t.year = f.year AND t.source_id = f.minSource

答案 1 :(得分:0)

SELECT score, team_id, year, min(source_id)
FROM TeamRankings
GROUP BY score, team_id, year
WHERE qualities_id=1