Inhaltsverzeichnis

Oracle 12c - SQL - Wie viele eindeutige Werte sind in einer Spalte einer Tabelle zu finden?

Aufgabe: Zähle alle eindeutigen Werte in einer Spalte einer Tabelle

Exakts Auswertung

Alle DB Versionen

Mit „count(distinct <spalte>)“ die eindeutigen Werte in einer Tabelle ermitteln.

Beipiel an einer kartesischen Abfrage um eine größere Datenmenge zu testen:

SET timing ON
 
SELECT COUNT(DISTINCT a.table_name) FROM dba_tables a,dba_tables b;
 
 
COUNT(DISTINCTA.TABLE_NAME)
---------------------------
                       2444
 
Abgelaufen: 00:01:16.47

Ungefähre Auswertung

Ab 12c offiziell, in 11g R2 schon vorhanden

Schätzen mit der „approx_count_distinct(<spalte>)“ Funktion:

SELECT approx_count_distinct(a.table_name) FROM dba_tables a,dba_tables b;
 
APPROX_COUNT_DISTINCT(A.TABLE_NAME)
-----------------------------------
                               2365
 
Abgelaufen: 00:01:11.37

siehe Dokumentation: https://docs.oracle.com/database/121/SQLRF/functions013.htm#SQLRF56900

Oft reicht es auf sehr großen Tabellen ja auch schon ein ungefähres Ergebnis zu erhalten.