如何在 PostgreSQL 数据库中按照某一列进行分组,并创建一个计算数据出现次数的列?
我正在使用 PostgreSQL 数据库。
我看到过以下方法:
SELECT
sum(CASE WHEN question1 = 0 THEN 1 ELSE 0 END) AS ZERO,
sum(CASE WHEN question1 = 1 THEN 1 ELSE 0 END) AS ONE,
sum(CASE WHEN question1 = 2 THEN 1 ELSE 0 END) AS TWO,
category
FROM reviews
GROUP BY category
question1
的取值可以是 0、1 或者 2。
我也看到过使用 count(CASE WHEN question1 = 0 THEN 1)
的版本。
然而,随着 question1
可能的取值数量增加,编写此查询变得更加麻烦。是否有一种方便的方法来编写此查询,可能还能优化性能?
end
。另一种选择是Postgres的crosstab
功能。我不知道哪个在性能方面更好。 - Gordon Linoff