Ich möchte zwei Tabellen als Teil eines Datenqualitätsberichts vergleichen. Das Ergebnis sollte drei Spalten Zusammenfassung der Spalte column_x in den Tabellen sein TABLE_A und Table_B:Anzahl der verschiedenen Werte auswählen, die nicht in einem anderen Bereich enthalten sind
- Prozent der column_x Werte in TABLE_A die
- Anzahl unterschiedlicher Werte in TABLE_A
- Anzahl unterschiedlicher Werte nicht leer sind TABLE_A die
Spalten 1 und 2 nicht in Table_B sind einfach einzurichten:
select
sum(CASE WHEN column_x = '' THEN 0 ELSE 1 END)/count(*) AS percent_complete_in_a, -- column 1
count(DISTINCT column_x) AS distinct_values_A -- column 2
from table_A
Aber ich kann nicht herausfinden, wie ich meine Abfrage schreiben soll, damit Spalte 3 in denselben Ergebnissen erscheinen kann. Ich habe ein paar Variationen auf der folgenden versucht, aber jeder wirft einen Syntaxfehler in Postgres:
select
sum(CASE WHEN column_x = '' THEN 0 ELSE 1 END)/count(column_x) AS percent_complete_in_a, -- column 1
count(DISTINCT column_x) AS distinct_values_A, -- column 2
count(DISTINCT column_x where column_x not in (select DISTINCT column_x FROM table_b)) as distinct_values_A_except_B -- column 3
from table_a
Gibt es eine Möglichkeit, diese Abfrage zu strukturieren, um es alle drei Spalten zeigen lassen?