如何计算任何列字段为真的行数?要么 如何计算任何列设置为true的用户数?
示例:
User Name Last Name
1 TRUE TRUE
2 FALSE TRUE
3 TRUE FALSE
4 FALSE FALSE
5 FALSE FALSE
对于上面的示例,名称或姓氏为真的行数或用户数等于3(用户1,用户2和用户3)
答案 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
转换为数字会产生1
或0
,以获取列数那些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;