Ich versuche, eine Teilmenge der Daten in einer Tabelle zu ordnen, aber ich denke, ich mache etwas falsch. Ich kann nicht viele Informationen über die Funktion rank() für Postgres finden, vielleicht suche ich an der falschen Stelle. So oder so:Wie in Postgres-Abfrage Rang
Ich möchte den Rang einer ID wissen, die in einem Cluster einer Tabelle basierend auf einem Datum fällt. Meine Frage lautet wie folgt:
select cluster_id,feed_id,pub_date,rank
from (select feed_id,pub_date,cluster_id,rank()
over (order by pub_date asc) from url_info)
as bar where cluster_id = 9876 and feed_id = 1234;
ich diese Modellierung bin nach dem folgenden Stackoverflow Beitrag: postgres rank
Der Grund, warum ich denke, dass ich etwas falsch mache, ist, dass es nur 39 Zeilen in url_info, die in cluster_id 9876 und diese Abfrage wurde für 10 Minuten ausgeführt und kam nie zurück. (tatsächlich lief es für eine ganze Weile und es gab keine Ergebnisse, aber es gibt eine Zeile in Cluster 9876 für ID 1234) Ich erwarte, dass dies mir sagen wird, wie "ID 1234 war 5. für die Kriterien gegeben." Es nach meinen Anfragebeschränkungen einen relativen Rang zurück, oder?
Dies ist postgres 8.4 btw.
Sie wollen den Rang relativ zu was? alle Datensätze (das ist, was Ihre Abfrage oben fragt und wahrscheinlich warum es zu lange dauert)? die Datensatzgruppe, die vom Prädikat ausgewählt wurde? eine andere Gruppierung? Die 'over'-Klausel sollte eine' Partition von' angeben, wenn Sie nicht über alle Zeilen ranken wollen. [Hier ist das Tutorial zu Fensterfunktionen] (http://www.postgresql.org/docs/8.4/static/tutorial-window.html) – dbenhur
Ich möchte relativ zum pub_date ranken. Vielleicht kann ich es etwas besser erklären: url_info hat Tausende von URLs drin. 39 von ihnen kompilieren Cluster 9876. Indem Sie nur URLs auswählen, die Mitglied von 9876 sind (URL kann NUR Mitglied eines Clusters sein), möchte ich die URLs (die den Cluster 9876 bilden) in der Reihenfolge basierend auf pub_date einstufen.Benütze ich immer noch Partitionen, die auf Fensterfunktionen basieren? Ich schaute auf die URL, die Sie gesendet haben, und es sieht so aus, dass es sich auf Ranking-Artikel bezieht, nachdem ich einen Wert berechnet habe, den ich hier nicht tue. – WildBill