在我的Postgres数据库表中,我可以cap_cs137
按日期顺序找到最后20个条目:
select cap_cs137 FROM capintec ORDER BY cap_date DESC LIMIT 20;
我也可以得到平均值:
select avg(cap_cs137) FROM capintec LIMIT 20;
但是,如何组合以上语句以按日期顺序获取最后20个条目的平均值?
我们有一个过时的RHEL 5.8服务器,它支持Postgres 8.1.23,因此不允许使用WITH
查询。
您可以使用CTE:
WITH s AS
(SELECT cap_cs137 FROM capintec ORDER BY cap_date DESC LIMIT 20)
SELECT avg(cap_cs137) FROM s;
第一个查询被缓存为临时表“ s”,然后在最终查询中对其运行聚合。
编辑:
事实证明,OP无法使用CTE,因为他使用的是Postgres的较旧版本,所以最终的答案是一个子选择(纯粹出于可读性,我碰巧不喜欢CTE;但是在C中却做同样的事情)这个案例):
SELECT avg(cap_cs137) FROM
(SELECT cap_cs137 FROM capintec ORDER BY cap_date DESC LIMIT 20);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句