熟悉的问题,但与 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) 值足够高,应该将其包含在结果中。
另外,如何实现 Top N 部分?我尝试在 OVER 函数中添加一个 LIMIT 子句,但它看起来不像是一个可接受的参数。