Domanda familiare, ma con Vertica. Vorrei restituire le prime 5 righe geo_country in base alla somma (imp) per ogni tag_id. Questa è la query ho iniziato:Torna all'inizio N righe per ciascun gruppo (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;
Ciò restituisce in realtà solo le righe dal primo tag nella clausola WHERE (2.013.150). So che l'altro tag ha valori di somma (imps) abbastanza alti che dovrebbero includerlo nei risultati.
Inoltre, come si implementa la parte Top N? Ho provato ad aggiungere una clausola LIMIT all'interno della funzione OVER, ma non sembra che sia un parametro accettato.
Questo è lo schema che uso ogni volta, ma per qualche motivo è così insoddisfacente. Immagino che mi piacerebbe che ci fosse qualcosa di simile a HAVING per le query analitiche? – kimbo305
Considera di accettare la tua risposta per completare la domanda. – Kermit
@ kimbo305 non è così che funzionano le query analitiche né seguire gli standard SQL. – Kermit