mysql - SQL 计算行中等于特定值的列

标签 mysql sql database

我有一个包含多个列的注册表,其中包含“进行中”或“已提交”等值。我试图计算这些列中有多少等于“已提交”,因此我可以确定用户的完成百分比。下面的查询显然只返回 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/

相关文章:

javascript - 动态 slider 双内容显示

mysql - 如何正确比较 MySQL 文本字段与任意长度的字符串?

sql - 如何发现表的外键链接到哪个表\字段?

sql - 如何添加字符

mysql - 主键作为外键

python - python中网络爬虫的数据库?

php sql值为空重定向

javascript - 如何使用 Node js将json输出插入mysql

mysql - 如何在php mysql中按年龄创建员工分组

ruby-on-rails - 具有大量小写入和长读取的 Rails 前端的 PostgreSQL 集群的最低硬件要求和设置是什么?