【问题标题】:Counting multiple data query for a single column计算单个列的多个数据查询
【发布时间】:2011-05-12 10:42:34
【问题描述】:

我有一个列名 state(int),其中根据逻辑只插入 0 和 1,我想要一个计数查询,它可以在单个查询中计算表中有多少个 0 和多少个 1喜欢:

从productDetail中选择Count(state)......

【问题讨论】:

    标签: asp.net sql database count


    【解决方案1】:
    select
        sum(state) countOfOnes,
        sum(decode(state, 0, 1, 0)) countOfZeros 
    from
        productDetail
    ;
    

    select
        sum(state) countOfOnes,
        count(*) - sum(state) countOfZeros 
    from
        productDetail
    ;
    

    select
        state, 
        count(*) over (partition by state order by state) countOfState
    from
        productDetail
    ;
    

    前两个示例将返回一行两列:

    countOfOnes  countOfZeros
    =========================
    154          21  
    

    第三个示例将返回两行两列,每个状态一行。

    state        countOfState
    =========================
    0            21
    1            154  
    

    【讨论】:

    • countOfZeros and one .. 它是在 sql server 中内置的吗
    • 我认为我们使用 As 作为结果列
    • 如果我想将 asp.net 中的两个结果列都用作单独的 int,我将如何执行此操作,因为查询将返回一个 dt,我是否应该执行类似 dt.Rows 的操作[0][0] , dt.Rows[0][1]
    【解决方案2】:

    另一种变体:

    select 
      count(*) countOverall,
      sum(state) countOfOnes,
      count(*) - sum(state) countOfZeroes
    from
      productDetail;
    

    【讨论】:

      【解决方案3】:
      select count(state) from productDetail Where state = 0
      select count(state) from productDetail Where state = 1
      

      【讨论】:

      • 这是两个语句... OP 要求单个查询。
      猜你喜欢
      • 2015-05-31
      • 2014-04-15
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 2010-11-19
      • 2011-09-19
      • 2019-01-12
      相关资源
      最近更新 更多