如果所有课程活动均在日期之前完成,则需要获得用户组的计数

时间:2019-05-07 11:10:20

标签: mysql

我有2个表的用户和user_activity,我需要获取输出,users表中有3个用户,并且在user_activity表中,所有用户在表中都有记录,对于user_id = 1,所有2个活动均已完成,两者activity_status为1,并提到活动在哪个日期完成,哪个活动已完成,对于user_id = 2,仅完成1个活动,对于user_id = 3,所有活动均已完成,如果特定用户的所有活动均已完成,则我需要然后只需要考虑记录中的用户,我需要按activity_completed desc顺序获取数据,我需要明智地计算用户日期,但是该日期应考虑上一门课程完成时的最后日期,在这里我已经上传了我的所有数据详细信息

users table

enter image description here

user_activity table

enter image description here

我需要如下所示的输出

+-----------+-----------+
| date      | total     |
+-----------+-----------+
|2019-05-06 |      2    |
+-----------+-----------+

我尝试了以下对我不起作用的查询

SELECT ua.activity_completed as date_by,counT(ua.activity_id) as total
FROM users AS u
INNER JOIN user_activity as ua 
ON u.ID = ua.user_id 
WHERE ua.activity_completed IS NOT NULL AND ua.activity_completed !="0" AND ua.activity_completed >= DATE(NOW()) - INTERVAL 7 DAY
group by date_by having count(*)  = sum(case when ua.activity_status = 1 then 1 end)

1 个答案:

答案 0 :(得分:0)

您可以尝试使用不同的ua.user_id

SELECT ua.activity_completed as date_by,count(distinct ua.user_id) as total
FROM users AS u
INNER JOIN user_activity as ua 
ON u.ID = ua.user_id 
WHERE ua.activity_completed IS NOT NULL 
AND ua.activity_completed !="0" 
AND ua.activity_completed >= DATE(NOW()) - INTERVAL 7 DAY
group by date_by 
having count(*)  = sum(case when ua.activity_status = 1 then 1 end)