【发布时间】:2013-06-19 07:43:25
【问题描述】:
假设我有一个运动会结果数据库,其架构如下
DATE,NAME,FINISH_POS
我希望进行查询以选择一名运动员至少参加了三项赛事但未获胜的所有行。例如下面的示例数据
2013-06-22,Johnson,2
2013-06-21,Johnson,1
2013-06-20,Johnson,4
2013-06-19,Johnson,2
2013-06-18,Johnson,3
2013-06-17,Johnson,4
2013-06-16,Johnson,3
2013-06-15,Johnson,1
以下行:
2013-06-20,Johnson,4
2013-06-19,Johnson,2
会匹配。我只设法从以下存根开始:
select date,name FROM table WHERE ...;
我一直在努力思考 where 子句,但我什至无法开始
【问题讨论】:
-
你是怎么得到这两行的?
-
在 2013 年 6 月 15 日获胜,因此忽略接下来的三个条目。然后抓住 2013-16-19, 2013-06-20 并忽略 2013-06-22 因为它只是最后一场胜利之后的一个事件
-
快速提示:“日期”是一个糟糕的列名;它是一个类型名称,因此您必须在某些地方“双引号”它以避免语法错误。避免使用类型名或关键字作为列名。
-
请始终在问题中包含您的 PostgreSQL 版本。在这种情况下,我和 Andomar 都使用了自 8.4 以来才可用的功能(可能是更新的)。
标签: sql postgresql window-functions