计算连续两天活动的mysql用户数

问题描述 投票:0回答:1

我需要计算连续两天处于活动状态的用户数量。我有表格'activity'

user_id | login_time

1234 | 2019-04-15

1456 | 2019-04-15

1234 | 2019-04-16

1456 | 2019-04-17

我如何计算15日和16日活跃用户的数量。

mysql date count self-join
1个回答
0
投票

仅需两天,这很容易,但是如果要计算一个月,则必须使用用户变量。

编辑:本月

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 |

db <>小提琴here

© www.soinside.com 2019 - 2024. All rights reserved.