ユーザーID、サブスクリプション終了日、プログラムIDを格納するサブスクリプションのテーブルがあります。 1人のユーザーは多くのプログラムを購読できますが、問題の範囲では最新の日付は購読の終了日と見なされます。目標は、毎月の毎月の購読が終了するユーザーの数を見つけることです。それを説明するために:mysqlの月間のグループ購読期間
-------------------------------------------
| user_id | program_id | end_date |
-------------------------------------------
| 1 | 1 | 2015-12-10 |
| 1 | 2 | 2017-08-27 |
| 2 | 1 | 2017-09-20 |
| 3 | 2 | 2017-10-01 |
| 2 | 3 | 2017-09-18 |
| 5 | 12 | 2017-10-22 |
| 4 | 3 | 2017-10-10 |
| 3 | 8 | 2018-11-15 |
-------------------------------------------
中間結果のショーをサブスクリプションはユーザーごとにいつ終了する(月だけが必要とされている):
Select user_id, DATE_FORMAT(max(end_date), '%Y-%m') AS as enddate
From subscription
Group by user_id
Order by end_date desc;
:これは、クエリで達成された
------------------------------
| user_id | enddate |
------------------------------
| 1 | 2017-08 |
| 2 | 2017-09 |
| 3 | 2018-11 |
| 4 | 2017-10 |
| 5 | 2017-10 |
------------------------------
最終結果では、リストをさらにフィルタリングする必要があり、毎月に何人のユーザがサブスクリプションを持たないのかを示すだけです(
0123)。------------------------------
| count | month, year |
------------------------------
| 1 | 2017-08 |
| 1 | 2017-09 |
| 2 | 2017-10 |
| 1 | 2018-11 |
------------------------------
これは私がmysqlのアイデアで悩んでいる場所です。結果を反復し、数えることは疑問ではありません。
、それは私の側の不注意なデータエントリーしました。ユーザーはプログラムで一度だけ購読してから、購読を更新します。この例ではデータを修正しました。 –