おなじみの質問ですが、Vertica についてです。各 tag_id の sum(imps) に基づいて、上位 5 つの geo_country 行を返したいと思います。これは私が始めたクエリです:
SELECT tag_id,
geo_country,
SUM(imps) AS imps,
RANK() OVER (PARTITION BY tag_id ORDER BY SUM(imps) DESC) AS rank
FROM table1
WHERE tag_id IN (2013150,1981153)
AND ymd > CURRENT_DATE - 3
GROUP BY 1,
2 LIMIT 10;
これは、実際には WHERE 句 (2013150) の最初のタグからの行のみを返します。他のタグの sum(imps) 値が十分に高く、結果に含める必要があることはわかっています。
また、トップ N 部分を実装するにはどうすればよいですか? OVER 関数内に LIMIT 句を追加しようとしましたが、受け入れられたパラメーターのようには見えません。