首页 >数据库 >mysql教程 >如何高效地统计 PostgreSQL 中的条件出现次数?

如何高效地统计 PostgreSQL 中的条件出现次数?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-24 06:21:10434浏览

How Can I Efficiently Count Conditional Occurrences in PostgreSQL?

PostgreSQL条件计数:优化方法

在数据库表中统计数据出现次数时,条件语句可能会显得冗长。幸运的是,PostgreSQL 提供了便捷高效的解决方案。

FILTER聚合选项

对于PostgreSQL 9.4及更高版本,利用FILTER聚合选项可获得最佳效率:

<code class="language-sql">SELECT category
     , count(*) FILTER (WHERE question1 = 0) AS zero
     , count(*) FILTER (WHERE question1 = 1) AS one
     , count(*) FILTER (WHERE question1 = 2) AS two
FROM   reviews
GROUP  BY 1;</code>

简洁的语法

如果简洁性是您的首要任务:

<code class="language-sql">SELECT category
     , count(question1 = 0 OR NULL) AS zero
     , count(question1 = 1 OR NULL) AS one
     , count(question1 = 2 OR NULL) AS two
FROM   reviews
GROUP  BY 1;</code>

交叉表查询

对于处理大型选项列表并追求更高性能,请考虑使用crosstab()函数:

<code class="language-sql">SELECT * FROM crosstab(
     'SELECT category, question1, count(*) AS ct
      FROM   reviews
      GROUP  BY 1, 2
      ORDER  BY 1, 2'
   , 'VALUES (0), (1), (2)'
   ) AS ct (category text, zero int, one int, two int);</code>

以上是如何高效地统计 PostgreSQL 中的条件出现次数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn