[英]How to do a sub-select per result entry in postgresql?
假设我有一个只有两列的表: id
, maturity
。 maturity
日是将来的某个日期,代表直到有特定条目可用时为止。 因此,对于不同的条目它是不同的,但不一定是唯一的。 随着时间的推移,尚未达到此maturity
日期的条目数也会发生变化。
我需要从这样的表中计算出在特定日期可用的条目(因此尚未达到其到期期限的条目)。 所以我基本上需要加入这两个查询:
SELECT generate_series as date FROM generate_series('2015-10-01'::date, now()::date, '1 day');
SELECT COUNT(id) FROM mytable WHERE mytable.maturity > now()::date;
在这里我需要放置生成的系列中的条目,而不是now()::date
。 我敢肯定这必须足够简单,但是我不能完全解决它。 我需要得到的解决方案来保持查询,因此似乎无法使用循环。
样本表条目:
id | maturity
---+-------------------
1 | 2015-10-03
2 | 2015-10-05
3 | 2015-10-11
4 | 2015-10-11
预期产量:
date | count
------------+-------------------
2015-10-01 | 4
2015-10-02 | 4
2015-10-03 | 3
2015-10-04 | 3
2015-10-05 | 2
2015-10-06 | 2
注意:由于添加了新条目并且此计数增加,因此该计数不会持续减少。
您必须在子查询的WHERE
子句中使用外部查询的字段。 如果子查询在外部查询的SELECT
子句中,则可以这样做:
SELECT generate_series,
(SELECT COUNT(id)
FROM mytable
WHERE mytable.maturity > generate_series)
FROM generate_series('2015-10-01'::date, now()::date, '1 day');
更多信息: http : //www.techonthenet.com/sql_server/subqueries.php
我认为您想按到期日期对数据进行分组。
检查一下:
select maturity,count(*) as count
from your_table group by maturity;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.