SQL - 用 Where 计数
SQL - Counting with Where
我有一个非常简单的 SQL 问题。我有一个包含以下列的数据库 table:
零件号
销售类型(为简单起见,将其称为销售类型 1,2,3,4,5)
我希望编写一个查询,给出以下三列:
- 零件号
- 销售类型的销售总数 = 2
- 销售类型 <> 2 的销售总数
我可以使用类似于下面代码的代码轻松地显示三列中的两列,但我不知道如何让所有三列同时显示。
SELECT
PartNumber AS PartNumber,
COUNT(*) AS SalesCount
FROM
SalesTable
WHERE
SalesType = 2
GROUP BY
I.PartNumber
我猜这可能很容易 - 我是一个 SQL 菜鸟,这是我的第一个 post!
非常感谢任何帮助!
未经测试,但您想要这样的东西:
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
听起来你要找的是 conditional count
SELECT
PartNumber,
SUM(CASE WHEN SalesType = 2 THEN 1 ELSE 0 END) as SaleTypeTwoCount,
SUM(CASE WHEN SalesType <> 2 THEN 1 ELSE 0 END) as SalesOtherCount
FROM
SalesTable
GROUP BY
PartNumber
实际上 运行 还没有,但是像这样的东西应该有用...
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(expression) 只计算非 NULL,而 COUNT(*) 计算所有行。
...
CASE WHEN SalesType = 2 THEN 1 END
...等同于...
CASE WHEN SalesType = 2 THEN 1 ELSE NULL END
...并且当 SalesType <> 2 不计算时将导致 NULL。
您可以使用案例例如:
saletype= case when saletype == 2 then count(saletype)
when saletype <> 2 then count(saletype)
我有一个非常简单的 SQL 问题。我有一个包含以下列的数据库 table:
零件号
销售类型(为简单起见,将其称为销售类型 1,2,3,4,5)
我希望编写一个查询,给出以下三列:
- 零件号
- 销售类型的销售总数 = 2
- 销售类型 <> 2 的销售总数
我可以使用类似于下面代码的代码轻松地显示三列中的两列,但我不知道如何让所有三列同时显示。
SELECT
PartNumber AS PartNumber,
COUNT(*) AS SalesCount
FROM
SalesTable
WHERE
SalesType = 2
GROUP BY
I.PartNumber
我猜这可能很容易 - 我是一个 SQL 菜鸟,这是我的第一个 post!
非常感谢任何帮助!
未经测试,但您想要这样的东西:
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
听起来你要找的是 conditional count
SELECT
PartNumber,
SUM(CASE WHEN SalesType = 2 THEN 1 ELSE 0 END) as SaleTypeTwoCount,
SUM(CASE WHEN SalesType <> 2 THEN 1 ELSE 0 END) as SalesOtherCount
FROM
SalesTable
GROUP BY
PartNumber
实际上 运行 还没有,但是像这样的东西应该有用...
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(expression) 只计算非 NULL,而 COUNT(*) 计算所有行。
...
CASE WHEN SalesType = 2 THEN 1 END
...等同于...
CASE WHEN SalesType = 2 THEN 1 ELSE NULL END
...并且当 SalesType <> 2 不计算时将导致 NULL。
您可以使用案例例如:
saletype= case when saletype == 2 then count(saletype)
when saletype <> 2 then count(saletype)