MySQL 連続サインイン日数をSQLで取得する方法
連続ログイン日数を確認するには、以下の手順に従ってください。
- attendanceという名前のテーブルを作成してください。以下のフィールドを含めてください。
- ID(整数型、主キー)
- ユーザーID(int、用户ID)
- 日付 (ひづけ、サインイン日)
- 出勤記録データをattendanceテーブルに挿入します。
INSERT INTO attendance (user_id, date) VALUES
(1, '2022-01-01'),
(1, '2022-01-02'),
(1, '2022-01-03'),
(1, '2022-01-05'),
(1, '2022-01-06'),
(1, '2022-01-07'),
(1, '2022-01-08'),
(1, '2022-01-09');
- 以下SQLクエリを使用して、連続するサインイン日数を計算してください。
SELECT user_id, MAX(streak) AS max_streak
FROM (
SELECT user_id, date,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY date) -
ROW_NUMBER() OVER (PARTITION BY user_id, date ORDER BY date) AS streak
FROM attendance
) AS subquery
GROUP BY user_id;
クエリ文では、ROW_NUMBER()を使用してユーザーのサインイン日における各レコードの順序を計算し、その後引き算を使って連続したサインイン日数を計算します。最後に、ユーザーIDでグループ化し、最大の連続サインイン日数を取得します。
以上の手順を通じて、各ユーザーの最大連続ログイン日数を確認することができます。