435 Stimmen

SQL, um die Anzahl der unterschiedlichen Werte in einer Spalte zu ermitteln

Ich kann alle eindeutigen Werte in einer Spalte auf die folgenden Arten auswählen:

  • SELECT DISTINCT column_name FROM table_name;
  • SELECT column_name FROM table_name GROUP BY column_name;

Aber wie erhalte ich die Zeilenzahl aus dieser Abfrage? Ist eine Unterabfrage erforderlich?

735voto

Noah Goodrich Punkte 24212

Sie können die DISTINCT Schlüsselwort innerhalb der COUNT Aggregatfunktion:

SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name

Dadurch werden nur die eindeutigen Werte für diese Spalte gezählt.

239voto

Paul James Punkte 2159

So erhalten Sie sowohl die einzelnen Spaltenwerte als auch die Anzahl der einzelnen Werte. In der Regel möchte ich beide Informationen wissen.

SELECT [columnName], count([columnName]) AS CountOf
FROM [tableName]
GROUP BY [columnName]

38voto

xchiltonx Punkte 1756

Eine Sql-Summe der eindeutigen Werte von column_name, sortiert nach der Häufigkeit:

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC;

31voto

David Aldridge Punkte 50293

Beachten Sie, dass Count() Nullwerte ignoriert. Wenn Sie also Nullwerte als eigenen Wert berücksichtigen müssen, können Sie etwas trickreich vorgehen:

select count(distinct my_col)
       + count(distinct Case when my_col is null then 1 else null end)
from my_table
/

15voto

Pete Karl II Punkte 3819
SELECT COUNT(DISTINCT column_name) FROM table as column_name_count;

muss man die einzelnen Spalten zählen und ihnen dann einen Alias geben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X