每个类别前5名的SQL查询
我有一个表,它有三列:Category、Timestamp和Value 我想要的是一个SQL选择,它将为我提供每个类别的5个最新值。我该怎么做呢 我试过这个:每个类别前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",
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个?非常感谢。幸运的是,性能在这里并不重要,所以这就是我所需要的。谢谢!:-)非常感谢你。幸运的是,性能在这里并不重要,所以这就是我所需要的。谢谢!:-)