假设我的表格只有两列: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
注意:此计数不会持续减少,因为新条目已添加且此计数会增加。
答案 0 :(得分:1)
您必须在子查询的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');
答案 1 :(得分:0)
我认为您希望在到期日之前对数据进行分组。
检查一下:
select maturity,count(*) as count
from your_table group by maturity;