SQL - 用Where计数

时间:2017-11-29 04:25:26

标签: sql counting

我有一个非常简单的SQL问题。我有一个包含以下列的数据库表:

  1. 零件编号

  2. 销售类型(为简单起见,称之为销售类型1,2,3,4,5)

  3. 我希望编写一个查询,提供以下三列:

    • 部件号
    • 销售类型的销售总数= 2
    • 销售类型<>的总销售数量2

    我可以很容易地使用类似下面代码的代码显示三列中的两列,但我很难知道如何让所有三列同时出现。

    SELECT 
        PartNumber AS PartNumber,
        COUNT(*) AS SalesCount
    FROM 
        SalesTable
    WHERE 
        SalesType = 2
    GROUP BY 
        I.PartNumber
    

    我猜这可能很容易 - 我是一个SQL菜鸟,这是我的第一篇文章!

    非常感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

未经测试,但你想要这样的东西:

 SELECT PartNumber, sum(case when SalesType=2 then 1 else 0) as Type2SalesCount,
    sum(case when SalesType<>2 then 1 else 0) as NoNType2SalesCount
    FROM SalesTable
    Group by PartNumber

答案 1 :(得分:0)

Haven实际上没有运行它,但是这样的事情应该有用......

SELECT
    PartNumber,
    COUNT(CASE WHEN SalesType = 2 THEN 1 END) Count2,
    COUNT(CASE WHEN SalesType <> 2 THEN 1 END) CountNot2
FROM
   SalesTable
GROUP BY
   PartNumber;

请注意,COUNT(表达式)仅计算非NULL,而COUNT(*)计算所有行。

......

CASE WHEN SalesType = 2 THEN 1 END

......等同于......

CASE WHEN SalesType = 2 THEN 1 ELSE NULL END

...当SalesType&lt;&gt;时将导致NULL 2,不计算在内。

答案 2 :(得分:0)

您可以使用案例例如: saletype= case when saletype == 2 then count(saletype) when saletype <> 2 then count(saletype)