我有一个我无法弄清楚的 SELECT 语句。查询如下:
SELECT
count(1),
interaction_type_id
FROM
tibrptsassure.d_interaction_sub_type
GROUP BY
interaction_type_id
HAVING
count(interaction_type_id) > 1
ORDER BY
count(interaction_type_id) DESC
LIMIT 5;
由于我的应用程序不支持使用 LIMIT 关键字,rank()
因此我尝试使用如下函数更改我的查询:
SELECT
interaction_type_id,
rank() OVER (PARTITION BY interaction_type_id ORDER BY count(interaction_type_id)
DESC)
FROM
tibrptsassure.d_interaction_sub_type;
但是,这样我最终得到了以下错误消息:
ERROR: column "d_interaction_sub_type.interaction_type_id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT interaction_type_id, rank() OVER (PARTITION BY inter...
^
********** Error **********
ERROR: column "d_interaction_sub_type.interaction_type_id" must appear in the GROUP BY clause or be used in an aggregate function
SQL state: 42803
Character: 9
rownum()
在 PostgreSQL 中是否有等价物?(除了使用 LIMIT 关键字来达到相同的结果,也就是说。)
有人对我有什么建议吗?提前致谢。