Kontext:Erstellen Sie Gruppen in einer Tabelle basierend auf Gruppenproportionen aus einer anderen Tabelle
Ich habe zwei Tabellen. TABELLE A hat Daten mit beispielsweise Format (mit 12 Gruppen AL bestellt, A = höchste, L = niedrigste):
ID | BAND
---- | ----
1 | A
2 | B
3 | A
4 | C
5 | D
6 | F
7 | D
8 | H
...
TABELLE B Daten mit beispielsweise Format hat:
ID | SCORE
---- | ----
1 | 0.12
2 | 0.37
3 | 0.21
4 | 0.55
5 | 0.01
6 | 0.90
7 | 0.10
8 | 0.71
...
I haben berechnet, die proportionalen Größen von jeder Gruppe in der Tabelle A unter Verwendung von:
CREATE TABLE table_a_group_pct AS
SELECT band
, count(*) * 100.0/sum(count(*)) over() AS pct
FROM table_a
GROUP BY band;
Mit Ausgang:
BAND | PCT
---- | ----
A | 12
B | 15
C | 11
D | 9
E | 10
F | 8
G | 11
H | 10
I | 6
J | 4
K | 3
L | 1
Ich wünsche 12 geordnet (von score) Gruppen für Tabelle B mit den gleichen proportionalen Größen wie die Gruppen in Tabelle A erstellen
Z.B. 12% der Zeilen in TABELLE A haben group = A, dann die obersten 12% rows (basierend auf der Punktzahl) würde group = A und so weiter gegeben ...
Ich denke, ich kann das Problem lösen, indem ich die NTILE(100)
Funktion, um die% -Position jeder Punktzahl zu finden und dann eine CASE WHEN
zu verwenden, um manuelle Gruppen basierend auf dem kumulativen% jeder Gruppe in Tabelle A zu erstellen (dh wenn Band A die oberen 12% der IDs hat, dann finde ich das 88. Perzentil in TABELLE B und zu tun:
CASE WHEN score_pct > 88 then 'A'
WHEN score_pct BETWEEN 88 and 73 then 'B' ...
END AS group`
aber ich versuche es zu verstehen, wenn smarter Weg, dieses Problem zu bewältigen
Weitere informatio. N: TABELLE A & TABELLE B haben nicht die gleiche Größe und nicht die exakt gleichen IDs, ich versuche nur ähnlich proportionierte Gruppen zu erstellen.
Meine erwartete Ausgabe ist so etwas wie folgt aus:
ID | SCORE | BAND
---- | ---- | ----
1 | 0.12 | K/11
2 | 0.37 | G/7
3 | 0.21 | H/8
4 | 0.55 | E/5
5 | 0.01 | L/12
6 | 0.90 | A/1
7 | 0.10 | K/11
8 | 0.71 | B/2
[meine Frage Edited hinzufügen Klarheit]
Können Sie die erwartete Ausgabe einschließen? –
Nein ... editiere deine Frage, wir können deine Gedanken nicht lesen –
Irgendwie macht die Frage für mich keinen Sinn. Sie beginnen damit, dass es * 12 * geordnete Bandings gibt und zeigen dann Tabellen mit * 8 * Zeilen. Vielleicht sollten Sie eine weitere * Frage stellen, die eine vereinfachte Version Ihres Problems und eine klarere Erklärung darstellt. Was ist zum Beispiel die "proportionale Größe von Tabelle A"? –