表结构是这样的:

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

10-06 14:17