【问题标题】:How do I count distinct to exclude a value?如何计算不同的值以排除值?
【发布时间】:2020-03-11 18:10:58
【问题描述】:

以下是 POS 系统中的不同比例。我正在尝试计算不是“MANUAL WT”的不同比例的数量。

这就是我所拥有的,但它返回 2 而不是 6。 count (distinct (d.SCALE_IN_ID != 'MANUAL WT' then 1 else 0 end)) as Num_Scale

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql count distinct


【解决方案1】:

考虑:

select count(distinct case when scale_in_id <> 'MANUAL WT' then scale_in_id end) cnt
from mytable

原始查询的问题是case 表达式将值转换为01,然后聚合函数计算返回了多少不同的值:因为值都是0s 或1s,只有两个不同的值(或边缘情况下的一个):因此您得到的结果。

【讨论】:

    【解决方案2】:

    一个简单的WHERE 子句就可以了:

    select count(distinct scale_in_id) Num_Scale
    from tablename
    where scale_in_id <> 'MANUAL WT'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2014-12-02
      • 2018-07-10
      相关资源
      最近更新 更多