如何计算任何列中的值设置为true的行实例数

时间:2016-03-29 20:15:38

标签: sql postgresql count boolean

如何计算任何列字段为真的行数?要么 如何计算任何列设置为true的用户数?

示例:

User    Name    Last Name
1   TRUE    TRUE
2   FALSE   TRUE
3   TRUE    FALSE
4   FALSE   FALSE
5   FALSE   FALSE

对于上面的示例,名称或姓氏为真的行数或用户数等于3(用户1,用户2和用户3)

2 个答案:

答案 0 :(得分:1)

您可以使用IN条件:

select count(*)
from the_table
where true in (name, last_name)

这相当于:

select count(*)
from the_table
where name = true 
   or last_name = true;

where name = true or last_name = true可缩短为where name or last_name

但是,当应包括更多列时,第一个查询更容易适应,例如true in (name, last_name, nick_name)

要获取真实的列数,您可以在Postgres中使用一种技巧,其中将boolean转换为数字会产生10,以获取列数那些true只是加起来:

select name::int + last_name::int as "Number of true values"
from the_table

SQLFiddle示例:http://sqlfiddle.com/#!15/23a4a/1

答案 1 :(得分:0)

您可以使用此查询实现目标

SELECT COUNT(*) FROM [table] WHERE [row1] = true OR [row2] = true;