2014-10-23 11 views
7

Ich habe eine Oracle-Datenbanktabelle mit vielen Spalten. Ich möchte die Anzahl der eindeutigen Zeilen zählen. Das einzige, was ich finden konnte, ist:So zählen Sie eindeutige Zeilen in Oracle

SELECT COUNT(DISTINCT col_name) FROM table; 

Dies würde jedoch erfordern mir alle Spalten Auflistung und ich habe nicht in der Lage gewesen, mit Syntax zu entwickeln, die für mich das tun. Ich vermute der Grund dafür ist, dass diese Abfrage sehr geringe Leistung hätte? Gibt es eine empfohlene Vorgehensweise?

+1

Mögliches Duplikat [SQL - wie einzigartige Kombination von Spalten zählen] (https://stackoverflow.com/questions/8519747/sql-how-to-count-unique-combination-of-columns) –

Antwort

15

Wie wäre es

SELECT COUNT(*) 
FROM (SELECT DISTINCT * FROM Table) 
+0

Bitte Formatcode zur besseren Lesbarkeit. Dies kann manuell erfolgen, indem Sie mit vier Leerzeichen einrücken oder die Taste {} drücken, während der Code ausgewählt ist. –

+4

Ich kam hierher, weil ich hoffte, dass es einen einfacheren Weg gibt, ohne eine Unterabfrage zu verwenden. –

2

Ich denke, man eine Zählung aller verschiedenen Zeilen aus einer Tabelle wie diese

select count(1) as c 
from (
    select distinct * 
    from tbl 
) distinct_tbl; 
0

SELECT DISTINCT wollen col_name, COUNT (*) FROM table_name Gruppe von col_name

+0

Bitte beachten Sie, dass "nur Code" Antworten entmutigt werden. Wenn überhaupt, formatiere es zumindest richtig! – GhostCat

1

Es hängt davon ab, was Sie erreichen wollen. Um eine Zählung der verschiedenen Reihen durch bestimmte Spalte zu erhalten, so dass Sie wissen, welche Daten vorhanden ist, und wie viele, dass unterschiedliche Daten gibt es:

SELECT DISTINCT 

A_CODE, COUNT(*) 

FROM MY_ARCHV 

GROUP BY A_CODE 

--Dieser informiert mich gibt 93 eindeutige Codes sind, und wie viele von jedem dieser Codes gibt es.

Eine andere Methode

--Wie zu zählen, wie viele von einem Typ Wert existiert in einer Oracle-Tabelle:
select A_CDE, --die Wert, den Sie
count(*) as numInstances --Wie viele von jedem Wert zu zählen, müssen
from A_ARCH - der Tisch, an dem er sich befindet
group by A_CDE - Sortiermethode

So oder so, bekommen Sie etwas, das wie folgt aussieht:

A_CODE Count(*) 

1603 32 

1600 2 

1605 14 
Verwandte Themen