Ich habe diese Tabelle (elev_table):einfügen Nullwert Zeilen Spaltenwert Postgres für fehlende
country | cat | elev
--------------+-----+----------
USA | 0 | 41.46
USA | 1 | 878.90
USA | 2 | 78.01
CAN | 0 | 46.00
CAN | 1 | 78.92
CAN | 2 | 78.01
CAN | 4 | 667.77
CAN | 5 | 10.80
Wie kann ich eine Abfrage erstellen, die gleiche Tabelle zurückzukehren, gefüllt mit Katze Werte fehlt? Die cat-Spalte muss Werte von (-1 bis 5) haben, aber nicht jeder Länderwert enthält jeden cat-Wert.
Wesentlichen für jedes Land in meinem Tisch muss ich Zeilen mit Höhenwerte für jeden Katzen Wert von -1 bis 5 .....
Zum Beispiel habe ich die resultierende Tabelle aussehen soll:
country | cat | elev
--------------+-----+----------
USA | -1 | 0
USA | 0 | 41.46
USA | 1 | 878.90
USA | 2 | 78.01
USA | 3 | 0
USA | 4 | 0
USA | 5 | 0
CAN | -1 | 0
CAN | 0 | 46.00
CAN | 1 | 78.92
CAN | 2 | 78.01
CAN | 3 | 0
CAN | 4 | 667.77
CAN | 5 | 10.80
Ich glaube, 0 wäre eine gute Darstellung, aber vielleicht wäre NULL besser?
Ich habe die folgende Abfrage versucht, aber das schafft keine fehlenden Zeilenwerte für jedes Land ... Ich weiß, ich vermisse etwas, aber kann nicht scheinen, was herauszufinden !!!
with cat_series as(
select generate_series(-1,5) as fullcat
)
select fullcat, coalesce(sum(t.elev),0), t.country
from cat_series
left join elev_table t on cat_series.fullcat=t.cat
group by fullcat, t.country
order by fullcat, t.country;
Noch ziemlich neu zu postgres, sql. Jede Hilfe oder Hinweise wären willkommen!
Sagen wir, es gibt eine zusätzliche Spalte in der elev_table. Würden keine where-Anweisungen dazu führen, dass die fehlenden Zeilen nicht gefüllt werden? zum Beispiel: in der unteren Tabelle WHERE et.color ist nicht null) country | Katze | Höhe | Farbe -------------- + ----- + ----------- + ------- USA | 0 | 41.46 | blau USA | 2 | 78.01 | CAN | 0 | 46,00 | blau CAN | 1 | 78,92 | rot CAN | 2 | 78.01 | CAN | 4 | 667.77 | blau CAN | 5 | 10.80 | –
@ F. Ronald. . . Eine 'WHERE'-Klausel würde die Ergebnisse beeinflussen. Wenn Sie eine andere Frage haben, sollten Sie sie vielleicht als Frage stellen. –