SQL GroupBy 获取列值的计数

SQL GroupBy to get count of column value

我有以下 table Rates 数据如下:

Code  Value
 A     FC
 B     PC
 A     PC
 A     FC
 B     FC
 C     PC

我期望输出如下:

Code  FC  PC
 A    2    1
 B    1    1
 C    0    1

我写查询如下:

SELECT
  Rates.Code AS Code,
  SUM(CASE WHEN Rates.Value='FC' THEN 1 ELSE 0 END) AS FC,
  SUM(CASE WHEN Rates.Value='PC' THEN 1 ELSE 0 END) AS PC
FROM
 Rates
GROUP BY Rates.Code
ORDER BY Rates.Code

它没有以预期的格式提供输出,我想我需要使用 Pivot 但不确定如何编写它,因为我是 SQL 的新手。 我已经编写了如下 python 代码,这对我来说工作正常,如果有人知道如何编写 SQL 将非常有帮助。

Rates.groupby(['Code'])['Value'].value_counts().unstack(fill_value=0)`

我认为该查询没问题,但如果“值”列中的值为 NULL,您可能会遇到问题。在这种情况下,您可以用“合并”包裹该列,如下所示:

SELECT
  Rates.Code AS Code,
  SUM(CASE WHEN coalesce(Value, '')='FC' THEN 1 ELSE 0 END) AS FC,
  SUM(CASE WHEN coalesce(Value, '')='PC' THEN 1 ELSE 0 END) AS PC
FROM
 Rates
GROUP BY Rates.Code
ORDER BY Rates.Code

嗯,这是假设这是您的问题。如果您添加预期的输出和您在问题中得到的输出,将会有所帮助。