在SQL中获取计数时,是否还可以获取总计数和列值也为1的记录计数?

时间:2019-04-28 12:40:03

标签: sql sqlite

我有以下表示的SQL表:

 public class Phrase
 {
    [PrimaryKey, NotNull]
    public string PhraseId { get; set; }
    public bool Hidden { get; set; }
 }

我知道我得到了所有这样的行数:

select count(*) as Total from Phrase

但是使用SQL还能获得Hidden = 1的那些行的计数以及总数。所以我的结果看起来像:

Count    HiddenCount
    
25          4

2 个答案:

答案 0 :(得分:1)

最简单的方法是这样

select 
  count(*) Count,
  (select count(*) from Phrase where Hidden = 1) HiddenCount
from Phrase 

由于SQLite中不存在布尔数据类型,因此我将列Hidden1的值进行了比较。您可以将其更改为表中使用的值,例如:

select count(*) from Phrase where Hidden = 'True'

答案 1 :(得分:1)

使用条件聚合:

select count(*) as cnt,
       sum(case when hidden = 1 then 1 else 0 end) as hiddencnt
from phrase;

或者:

select count(*) as cnt,
       sum(hidden) as hiddencnt
from phrase;

SQLite中没有本机布尔类型,因此假设hidden是仅接受此答案的01值的数字。