【发布时间】:2014-06-05 23:35:41
【问题描述】:
我已经搜索过这个,但所有类似的问题和答案都不同,无法正常工作。
我有一个包含以下字段的表格:person、thing、purdate。当一个人购买每件新东西时,就会输入一条新记录。
我想计算一个人购买任何“东西”(thing01 或 thing02,不重要)的连续月份。如果连续 purdays 有中断,则计数应重新开始。
附上数据后,我想这样结束:
| Person | Consec Days |
| person_01 | 3 |
| person_02 | 3 |
| person_02 | 2 |
我知道我可以得到一个不同的人员列表,extract(year_month from purdate)——我已经在这个SQLFIDDLE 中完成了——但我不知道如何只计算连续记录并开始在休息时结束(比如在我的数据中,person_02 在 3 月到 5 月之间休息。)
这是数据:
create table records (
person varchar(32) not null,
thing varchar(32) not null,
purdate datetime not null
);
insert into records (person, thing, purdate) values
('person_01', 'thing01', '2014-01-02'),
('person_01', 'thing02', '2014-01-02'),
('person_01', 'thing02', '2014-02-27'),
('person_01', 'thing02', '2014-03-27'),
('person_02', 'thing02', '2014-01-28'),
('person_02', 'thing01', '2014-02-28'),
('person_02', 'thing02', '2014-03-28'),
('person_02', 'thing02', '2014-05-29'),
('person_02', 'thing02', '2014-06-29')
;
【问题讨论】:
-
没有订单,您的表中就没有订单,那么这里之前的关系是什么?您需要一个 id。
-
@米海。 . .日期提供了回答问题所需的订购信息。
标签: mysql sql mysql-variables