個別のタプルのみを返すクエリをPostgresで送信しようとしています。私のサンプルクエリでは、cluster_id/feed_idの組み合わせに対してエントリが複数回存在する重複エントリは必要ありません。私が簡単に行う場合:
select distinct on (cluster_info.cluster_id, feed_id)
cluster_info.cluster_id, num_docs, feed_id, url_time
from url_info
join cluster_info on (cluster_info.cluster_id = url_info.cluster_id)
where feed_id in (select pot_seeder from potentials)
and num_docs > 5 and url_time > '2012-04-16';
それだけですが、に従ってグループ化したいと思いnum_docs
ます。だから、私が次のことをするとき:
select distinct on (cluster_info.cluster_id, feed_id)
cluster_info.cluster_id, num_docs, feed_id, url_time
from url_info join cluster_info
on (cluster_info.cluster_id = url_info.cluster_id)
where feed_id in (select pot_seeder from potentials)
and num_docs > 5 and url_time > '2012-04-16'
order by num_docs desc;
次のエラーが発生します。
ERROR: SELECT DISTINCT ON expressions must match initial ORDER BY expressions
LINE 1: select distinct on (cluster_info.cluster_id, feed_id) cluste...
エラーが発生する理由は理解できたと思いますが(グループを明示的に説明しない限り、タプルでグループ化できません)、どうすればよいですか?または、エラーの解釈が間違っている場合、最初の目標を達成する方法はありますか?