sagen, dass ich die folgenden Daten in Athena haben:Athena (Presto) SQL Fensterfunktionen
id ts
uid1 1499672134268
uid1 1499672134292
uid1 1499672136189
uid1 1499672136212
uid1 1499719927907
uid1 1499719927940
uid1 1499719927975
uid1 1499719927999
uid2 1499670000000
uid2 1499670000010
uid2 1499688880010
ich möchte es Rang so:
rank id ts
1 uid1 1499672134268
1 uid1 1499672134292
1 uid1 1499672136189
1 uid1 1499672136212
2 uid1 1499719927907
2 uid1 1499719927940
2 uid1 1499719927975
2 uid1 1499719927999
1 uid2 1499670000000
1 uid2 1499670000010
2 uid2 1499688880010
die Logik ist:
die Differenz zwischen dem Min Wert in der zweiten Gruppe und der maximale Wert in der ersten Gruppe ist größer als x
Ich denke eine Kombination von dense_rank() OVER (PARTITION BY id ...)
könnte es auflösen, aber ich bin ein Neuling zu Fensterfunktionen in SQL.
Dank
Was ist 'x' in diesem Beispiel? meinst du das zurücksetzen der gruppe wenn der unterschied von vorherigen ts> x? –
genau, x ist nur ein bestimmter Schwellenwert – belostoky
Klären Sie die Logik mit dem Datenbeispiel. Ihre Postdefinition stimmt nicht mit Ihrer Antwort auf @vkp überein –