I-Daten im folgenden Format habenAggregatfunktion bestimmten Wert zu halten, abhängig von anderen Spalten
id_A id_B val -------------------------------- 1 1 1 1 2 2 2 1 3 2 3 4
Gibt es eine nette Art von ID_A zu einer Gruppe, während der Wert der Linie zu halten, wo ID_A = Id_B?
Der Grund, den ich aggregieren muss, ist, dass, wenn es keine solche Linie gibt, ich den Durchschnitt will.
Das Ergebnis sollte wie folgt aussehen:
id_A val ----------------- 1 1 2 3.5
Ich habe mit der folgenden kommen, aber dieser Fall sieht hässlich und Hacky mir.
Select id_A,
Coalesce(
avg(case when id_A = id_B then val else null end),
avg(val)
) as value
From myTable
Group by id_A;
Ihre Abfrage sieht gut für mich und ich upvoted Sie für die Mühe. –
Welche Version von postgres verwendest du? –
Ich benutze Postgres 8.3, aber danke für Ihre Antwort trotzdem. – Atn