Gruppierung Ich habe die folgende Tabelle:die höchste Anzahl für eine kategorische Variable auswählt, wenn
custID Cat
1 A
1 B
1 B
1 B
1 C
2 A
2 A
2 C
3 B
3 C
4 A
4 C
4 C
4 C
Was ich brauche, der effizienteste Weg ist durch CustID in einer solchen Weise, dass ich die häufigste Kategorie erhalten zu aggregieren (Katze), die zweithäufigste und die dritte. Der Ausgang des oben sollte
most freq 2nd most freq 3rd most freq
1 B A C
2 A C Null
3 B C Null
4 C A Null
werden, wenn es einen Gleichstand in der Zählung ist mir egal, was wirklich ist zuerst und was Sekunde. Zum Beispiel könnte für Kunde 1 die zweithäufigste und die dritthäufigste Frequenz ausgetauscht werden, da jede von ihnen nur einmal auftritt.
würde jeder SQL fein, bevorzugt Hive SQL sein.
Danke
Verwendung 'dense_rank' statt' row_number' entspricht, so dass Verbindungen don Wenn es sie gibt, erscheinen sie nicht in den zweit- und dritthäufigsten Werten. ja –
@VamsiPrabhala dank –
auch entfernen '[]' für Spalte-Aliase, da sie nicht in Hive unterstützt. –