私は、私が理解できない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 キーワードを使用して同じ結果を得ることは別として。)
誰か私に提案はありますか?前もって感謝します。