首页 > 解决方案 > 在 PostgresSQL 中使用 group by 函数而不提及列名

问题描述

我想对msg_type表中的列名使用分组函数,prod_replay_in但不想msg_type在下面的查询中使用列名。任何建议将不胜感激。谢谢你。

Table name = prod_replay_in
Column list =  id int,
               msg_type varchar(20), 
               msg  text;

我试过什么?

select count(*), msg_type from prod_replay_in
group by msg_type

标签: sqlpostgresqlselect

解决方案


您可以使用window函数来计算聚合结果,而无需使用GROUP BY子句。

示例 SQL -

select t.msg_type, t.ccount from
(select msg_type, count(*) over(partition by msg_type) ccount, 
rank() over(partition by msg_type order by id) rrank 
from prod_replay_in) t where rrank = 1;

推荐阅读