クレジット カード トランザクションの MySQL データ セットがあります。
create table trans (
transdate date,
card_id int
);
私は知りたいです:
1. how many cards were used to make at least 1 transaction, per month
2. how many cards were used to make at least 5 transactions, per month
3. how many cards were used to make at least 10 transactions, per month
4. how many cards were used to make at least 20 transactions, per month
etc...
グループが重複しているため、条件付き集計の方が優れたアプローチのようです。
select sum(cnt >= 1) as trans_1,
sum(cnt >= 5) as trans_5,
sum(cnt >= 10) as trans_10,
sum(cnt >= 20) as trans_20
from (select card_id, count(*) as cnt
from trans
group by card_id
) d;
問題は、上記が合計で結果セットを生成することです。1 か月あたりの結果セットが必要です。
year | month | trans_1 | trans_5 | trans_10 | trans_20 | etc
2015 | 1 | 1 | 1 | 0 | 0 |
2015 | 2 |
2015 | 3 |
このデータセットで月ごとにグループ化する方法がわかりません。