Рассчитать количество пользователей, которые были активны два дня подряд mysql - PullRequest
0 голосов
/ 25 марта 2020

Мне нужно рассчитать количество пользователей, которые были активны два дня подряд. У меня есть таблица «активность»

user_id | login_time

1234 | 2019-04-15

1456 | 2019-04-15

1234 | 2019-04-16

1456 | 2019-04-17

Как рассчитать количество пользователей, которые были активны 15 и 16 числа.

1 Ответ

0 голосов
/ 25 марта 2020

Это просто за два дня, но если вы хотите рассчитать за месяц, вы должны использовать пользовательские переменные.

Редактировать: для текущего месяца

SELECT 
  COUNT(user_id)
FROM
  (SELECT
     user_id
   FROM 
     (SELECT `user_id`, `login_time` FROM user_login 
      WHERE `login_time` BETWEEN CONCAT(YEAR(NOW()),'-',MONTH(NOW()),'-15') 
        AND CONCAT(YEAR(NOW()),'-',MONTH(NOW()),'-16'
      GROUP BY `user_id`, `login_time`)
     user_login)
GROUP By user_id
HAVING COUNT( user_id) = 2) a
CREATE TABLE user_login (
  `user_id` INTEGER,
  `login_time` date
);

INSERT INTO user_login
  (`user_id`, `login_time`)
VALUES
  ('1234', '2019-04-15'),
  ('1456', '2019-04-15'),
  ('1456', '2019-04-15'),
  ('1234', '2019-04-16'),
  ('1456', '2019-04-17');
✓

✓
SELECT 
COUNT(user_id)
FROM
(SELECT
user_id
FROM 
(SELECT `user_id`, `login_time` FROM user_login
WHERE `login_time` BETWEEN '2019-04-15' AND '2019-04-16'  GROUP BY `user_id`, `login_time`)
user_login
GROUP By user_id
HAVING COUNT( user_id) = 2) a
| COUNT(user_id) |
| -------------: |
|              1 |

дБ <> скрипка здесь

...