Ich habe gesehen this question, was fast genau das ist, was ich will. Aber ich kann es nicht mit BigQuery mit Standard-SQL arbeiten, weil BQ benutzerdefinierte Variablen nicht erlaubt.Get Top N Datensätze für jede Gruppe von gruppierten Ergebnissen mit Bigquery (Standard-SQL)
Hinweis - I eine beliebige Anzahl von Gruppen, so UNION
alle von ihnen nach der ersten Antwort in der verknüpften Frage ing ist nicht machbar.
Das Folgende ist das möglichst einfache Beispiel, wenn jede Lösung soll jedoch sind viele n Top-Ergebnisse zu skalieren der Lage sein, benötigen:
eine Tabelle wie die unten gegeben, mit der Person, Gruppe und Alter Spalten, Wie würden Sie die 2 ältesten Personen in jeder Gruppe bekommen? (Krawatten innerhalb Gruppen sollten nicht mehr Ergebnisse liefern, sondern geben den ersten 2 in jedem Reihenfolge)
+--------+-------+-----+
| Person | Group | Age |
+--------+-------+-----+
| Bob | 1 | 32 |
| Jill | 1 | 34 |
| Shawn | 1 | 42 |
| Jake | 2 | 29 |
| Paul | 2 | 36 |
| Laura | 2 | 39 |
+--------+-------+-----+
Wunschergebnismenge:
+--------+-------+-----+
| Shawn | 1 | 42 |
| Jill | 1 | 34 |
| Laura | 2 | 39 |
| Paul | 2 | 36 |
+--------+-------+-----+
Eine Antwort in der verknüpften Frage erwähnt mit ROW_NUMBER
, die es gibt, aber ich kann nicht herausfinden, wie Sie die Nummer für jede Gruppe neu starten.