每个类别前5名的SQL查询

每个类别前5名的SQL查询,sql,Sql,我有一个表,它有三列:Category、Timestamp和Value 我想要的是一个SQL选择,它将为我提供每个类别的5个最新值。我该怎么做呢 我试过这个: select a."Category", b."Timestamp", b."Value" from (select "Category" from "Table" group by "Category" order by "Category") a, (select a."Category", c."Timestamp",

我有一个表,它有三列:Category、Timestamp和Value

我想要的是一个SQL选择,它将为我提供每个类别的5个最新值。我该怎么做呢

我试过这个:

select
  a."Category",
  b."Timestamp",
  b."Value"
from
(select "Category" from "Table" group by "Category" order by "Category") a,
(select a."Category", c."Timestamp", c."Value" from "Table" c
where c."Category" = a."Category" limit 5) b
不幸的是,它不允许这样做,因为“FROM中的子查询不能引用相同查询级别的其他关系”

顺便说一下,我正在使用PostGreSQL 8.3

任何帮助都将不胜感激。

选择t1.category、t1.timestamp、t1.value、COUNT(*)作为最新版本
SELECT t1.category, t1.timestamp, t1.value, COUNT(*) as latest
FROM foo t1
JOIN foo t2 ON t1.id = t2.id AND t1.timestamp <= t2.timestamp
GROUP BY t1.category, t1.timestamp
HAVING latest <= 5;
来自foo t1 在t1.id=t2.id和t1.timestamp
上连接foot2,选择t1.category、t1.timestamp、t1.value、COUNT(*)作为最新版本
来自foo t1

在t1.id=t2.id和t1.timestamp上加入foot2类似的问题:有n个类别@hobodaveI am没有过度简化。可以有任意数量的类别,从3到30000。是否要在同一个查询中获取所有类别?以任何顺序,或某些特定顺序?@hobodave,对不起,让我重新措辞:您想从同一查询中的所有类别中获取5个最新的类别吗?这里的问题类似:有n个类别@hobodaveI我没有过分简化。可以有任意数量的类别,从3到30000。是否要在同一个查询中获取所有类别?以任何顺序,或某些特定顺序?@hobodave,对不起,让我重新措辞:您想从同一查询中的所有类别中获取最近的5个?非常感谢。幸运的是,性能在这里并不重要,所以这就是我所需要的。谢谢!:-)非常感谢你。幸运的是,性能在这里并不重要,所以这就是我所需要的。谢谢!:-)