私はこれを検索しましたが、同様の質問と回答はすべて機能しないほど異なっています。
次のフィールドを持つテーブルがあります:人、物、パーデート。人が新しいものを購入するたびに、新しいレコードが入力されます。
人が何か「もの」を購入した連続した月を数えたいと思います (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')
;