gpt4 book ai didi

sql - 如何获取位类型列的计数?

转载 作者:行者123 更新时间:2023-12-02 17:47:48 25 4
gpt4 key购买 nike

我正在尝试使用 SEDE确定总共授予了多少个基于标签的徽章。我的典型策略是总结:

select sum(TagBased)
from Badges

不幸的是,由于 TagBased 是一个位值,我收到此错误:

Operand data type bit is invalid for sum operator.

出于绝望,我尝试计数:

select count(TagBased)
from Badges

这会计算非空值的数量,在本例中与 count(*) 相同。那么一个位值如何聚合使用呢?

最佳答案

如果您只是想查看基于标签的徽章而不关心其余部分,则可以将测试移至 where 子句:

select count(*)
from Badges
where TagBased = 1

规范的解决方案是将位值转换为可以求和的数据类型:

select sum(cast(TagBased as decimal))
from Badges

更灵活的解决方案是使用 CASE statement 自行进行转换。 :

select sum(case TagBased when 1 then 100.0 end)/count(*) tag_based_per
from Badges

或者,在较新版本的 SQL Server 中,有一个 IIF function :

select sum(iif(TagBased = 1, 1, 0))
from Badges

最后,如果您正在打高尔夫球,您可以欺骗 SQL 来为您转换位:

select sum(TagBased+0)
from Badges

这项技术的功劳归于 Kenneth Baltrinic对更具体问题的回答。

供引用(和潜在的 fork ):my test queries .

关于sql - 如何获取位类型列的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com