【问题标题】:Query for Counting column with Datatype Bit使用数据类型位查询计数列
【发布时间】:2011-05-13 10:16:02
【问题描述】:

我有一个列名检查,数据类型位(真或假),我想做的是计算列中有多少假和真。

SELECT 
COUNT(FeatureState) AS tot_true, 
COUNT(*)-COUNT(FeatureState) AS tot_false
FROM productDetail
 WHERE FeatureState= 1

这行得通

【问题讨论】:

    标签: sql sql-server database count


    【解决方案1】:

    怎么样;

    SELECT 
      COUNT(CASE fld WHEN 0 THEN 1 ELSE NULL END) AS ZEROS,
      COUNT(CASE fld WHEN 1 THEN 1 ELSE NULL END) AS ONES
    FROM
      T
    
    --alternative
    
    SELECT 
      SUM(CASE fld WHEN 0 THEN 1 ELSE 0 END) AS ZEROS,
      SUM(CASE fld WHEN 1 THEN 1 ELSE 0 END) AS ONES
    FROM
      T
    

    【讨论】:

      【解决方案2】:

      试试这个,应该可以的:

      SELECT 
          COUNT(field) AS tot_true, 
          COUNT(*)-COUNT(field) AS tot_false
      FROM table
      WHERE field=1
      

      【讨论】:

      • 干杯我刚刚在上面的问题中修改了你的 sql,它可以工作
      • @Muhammad Awais:很高兴为您提供帮助! :)
      • 为什么要投反对票?我的查询有什么问题?请解释一下,这样我就可以纠正它并学习新的东西!
      • @Marco:所有答案都被否决了。一些人试图奉承自己的答案。如果你看时间,你可以有信心猜出罪魁祸首是谁。无论如何,我要 +1。
      • @gbn: 真的很糟糕.. 这是一个帮助和获得帮助的论坛,而不是最好的。你在这里做得很好,谢谢!!
      【解决方案3】:

      我已经使用 SIGN 将位更改为 int

      SELECT 
          SUM(SIGN(field)) AS tot_true, 
          SUM(1-SIGN(field)) AS tot_false
      FROM table
      

      或者使用 COUNT 忽略 NULL 的事实

      SELECT 
          COUNT(NULLIF(field, 0)) AS tot_true, 
          COUNT(NULLIF(field, 1)) AS tot_false
      FROM table
      

      如果您想要其他值 MAX(SomeOtherField),其中最高值来自其他解决方案中过滤掉的“假”行,则此方法有效

      【讨论】:

      • 啊哈。对所有答案进行一些战术性的投票,除了一个......奇怪的是
      【解决方案4】:
      SELECT 
      SUM(CASE WHEN FeatureState = 1     THEN 1 ELSE 0 END) AS TrueCount,
      SUM(CASE WHEN FeatureState = 0     THEN 1 ELSE 0 END) AS FalseCount,
      SUM(CASE WHEN FeatureState IS NULL THEN 1 ELSE 0 END) AS NullCount,
      COUNT(1)                                              AS TotalCount
      FROM ProductDetail
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-22
        • 1970-01-01
        相关资源
        最近更新 更多