表结构是这样的:
planID TinyInt(1)
userID INT(11)
isComplete TinyInt(1)
isQuit TinyInt(1)
因此,首先,我需要:
从特定的userID获得结果
对于每个用户,他们可能具有加入计划1(例如planID = 1),计划2或plan3(可以无限时间再次加入)
计算所有计划(1、2、3)的isComplete时间和isQuit时间
因此,ID为1的用户可以参加3次计划3次,并且完成1次退出2次,参加2次计划1次,完成2次,等等。
以某种方式尝试
SELECT COUNT(`isComplete`) as total_complete, COUNT(`isQuit`) as total_quit FROM `user_plan` WHERE `userID` = 1 AND isComplete = 1 OR isQuit = 1 GROUP BY `planID`
但与预期不同
如果过于复杂,我可以为每个计划查询3次,谢谢您的帮助
更新
样本输入:
planID | userID | isComplete | isQuit
-------------------------------------------------------
1 | 1 | 0 | 1
1 | 1 | 1 | 0
1 | 1 | 0 | 0
最佳答案
如果是在SQL Server中,那就应该是这样。 (如果阅读的问题正确)
SELECT userID,
SUM(isComplete) as total_complete,
SUM(isQuit) as total_quit
FROM user_plan
WHERE userID = 1
AND isComplete = 1
GROUP BY userID