Ich stehe mit Redshift vor einer Herausforderung: Ich versuche, Zeilen dynamisch in Spalten zu verschieben und nach Anzahl zu aggregieren, habe jedoch festgestellt, dass die Pivot-Tabellenfunktion nur von PostgreSQL 9 verfügbar ist.
Haben Sie eine Idee, wie Sie Folgendes tun können?
index fruit color
1 apple red
2 apple yellow
2 banana blue
2 banana blue
3 banana blue
3 banana green
3 pear green
3 pear red
zu:
index red yellow blue green
1 1 0 0 0
2 0 1 2 0
3 1 0 1 2
Im Wesentlichen das Gruppieren und Zählen von Vorkommen von Farben pro ID (Frucht ist nicht so wichtig, obwohl ich sie später als Filter verwenden werde).
Hinweis: Vielleicht möchte ich später auch eine binäre Transformation durchführen (dh 0 für 0 und 1 wenn > 0)
Edit: Wenn das obige nicht möglich ist, kann man dies stattdessen tun?
index color count
1 red 1
1 yellow 0
1 blue 0
1 green 0
2 red 0
2 yellow 1
2 blue 2
2 green 0
3 red 1
3 yellow 0
3 blue 1
3 green 2
(wieder sollten blau, gelb, blau und grün dynamisch sein)
Für das Edit könntest du tun
select x.index, x.color, sum(case when y.index is not null then 1 else 0 end) as count
from
((select index
from [table]
group by index
order by index) a
inner join
(select color
from [table]
group by color
order by color) b
on 1 = 1) x
left outer join
[table] y
on x.index = y.index
and x.color = y.color
group by x.index, x.color
order by x.index, x.color
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen