如何通过单条类SQL查询统计总记录数及布尔属性为True的数量?是否需分两次?
一次查询即可完成,无需分两次执行
你完全不需要拆分两次查询,你当前写的这条SQL语句已经可以完美满足需求了,而且效率更高。
为什么这条查询能生效?
在大多数支持布尔值运算的数据库(比如你这里看起来像是使用的Cosmos DB SQL语法)中,布尔值会被自动转换为数值参与聚合计算:
true等价于 1false等价于 0
所以针对你的测试数据:
{"id":"1","boolProperty":true}、{"id":"2","boolProperty":false}
执行查询:
select count(c.id) as count, sum(c.boolProperty) as sum from c
会直接返回你预期的结果:
{"count": 2, "sum": 1}
关于分两次查询的补充
当然分两次查询(比如一次查总记录数,一次查boolProperty = true的记录数)也能得到同样的结果,但这样会增加一次数据库请求,既浪费资源又降低效率,完全没有必要。
内容的提问来源于stack exchange,提问作者Ross Dargan
相关产品推荐
相关产品推荐

