我有下表
CREATE TABLE tickets(
Id INT,
date_ date
);
以及以下数据
INSERT INTO tickets (id, date_)
VALUES (1, '2019-04-01'),
(2, '2019-04-02'),
(3, '2019-05-01'),
(4, '2019-05-02’);
每行代表一张已购买的票。我正在尝试计算从指定日期起每月购买的车票数量。
例如
2019-04-01应该返回1,因为从2019-03-01到2019-04-01只购买了1张门票
2019-01-02应该返回2,因为在2019-03-02至2019-04-02之间购买了2张门票
2019-05-01 3
2019-05-02 3
我尝试了以下
SELECT count(id) as count_tickets,
date_
FROM tickets
WHERE date_ <= date_
AND date_ >= date_ - interval '1' month
GROUP BY date_
但这只会返回当天的总数。如何获得给定日期的每月总数?每月,表示从给定日期到给定日期之前1个月。
答案 0 :(得分:0)
使用相关查询:
SELECT t1.date_, (SELECT COUNT(*)
FROM tickets t2
WHERE t2.date_ <= t1.date_
AND t2.date_ >= t1.date_ - interval '1' month) as total_tickets
FROM tickets t1
如果date_
是一个参数,则只需删除group by
:
SELECT count(id) as count_tickets
FROM tickets
WHERE date_ <= the_date
AND date_ >= the_date - interval '1' month