我有一个包含多个列的注册表,其中包含“进行中”或“已提交”等值。我试图计算这些列中有多少等于“已提交”,因此我可以确定用户的完成百分比。下面的查询显然只返回 0 或 1,因为它只查询一列,但我如何合并其他列?
比如我想统计下面有多少列等于“已提交”或“已接受”:
network_user_status
work_ed_status
chores_status
class_schedule_status
SELECT COUNT(id) FROM registration WHERE username = "ajackson" AND enrollment_agreement_status = "accepted" OR enrollment_agreement_status = "submitted"
最佳答案
首先,您的查询并没有按照您认为的那样进行。 username
条件仅适用于“已接受”。我很确定你的意思是:
SELECT COUNT(id)
FROM registration
WHERE username = 'ajackson' AND enrollment_agreement_status in ('accepted', 'submitted')
如果要计算一个或另一个或两个值,请使用条件聚合。这在 MySQL 中很容易:
select count(id), sum(enrollment_agreement_status = 'accepted') as accepted,
sum(enrollment_agreement_status = 'submitted') as submitted
from registration
where username = 'ajackson';
关于mysql - SQL 计算行中等于特定值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23348054/