【发布时间】:2011-10-12 15:26:41
【问题描述】:
CREATE TABLE games
(
idg serial NOT NULL,
nation character(3),
points integer,
datag date,
CONSTRAINT pk_games PRIMARY KEY (idg )
)
idg nation points dateg
1 ita 12 2011-10-10
2 fra 9 2011-10-11
3 ita 4 2011-10-12
4 fra 8 2011-10-11
5 ger 12 2011-10-12
6 aut 6 2011-10-10
7 ita 11 2011-10-17
8 ita 10 2011-10-18
9 fra 9 2011-10-19
10 ger 15 2011-10-19
11 fra 16 2011-10-18
我想显示按周分组的最大三个总数。我知道我不能使用 max(sum(points),所以我进行了下一个查询:
select extract(week from datag) as "dateg", nation, sum(points) as "total"
from games
group by dateg, nation
order by dateg asc, total desc limit 3
但是这些只返回了前三个总数。我怎样才能做到每周(每组的前三个总数,这将是一种“每周前三名”)?有什么想法吗?
在 Postgresql 9 中工作。
提前致谢。
【问题讨论】:
-
您使用的是哪个版本?如果您运行的是 8.4+,则比使用 8.3 或更早版本要容易得多。
-
"PostgreSQL 9.0.4,由 Visual C++ build 1500 编译,64 位"
标签: function postgresql group-by