熟悉的問題,但使用Vertica。我想根據每個tag_id的sum(imps)返回前5個geo_country行。這是我開始的查詢:返回每組最多N行(Vertica/vsql)
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子句,但它看起來並不像一個可接受的參數。
這是我每次使用的模式,但由於某種原因,它是如此令人不滿意。我想我希望有一些類似於HAVING的分析查詢? – kimbo305
考慮接受你的答案來完成問題。 – Kermit
@ kimbo305這不是分析查詢如何工作,也不會遵循SQL標準。 – Kermit