2017-07-03 6 views
0
in einer SQL-Tabelle zählen

hallo Ich habe eine Tabelle, die ich zum Beispiel, ich habe diese Zeilen, wie verschiedene Zeilen aus dem gleichen Feld

Function field1 field2 field3 
'dog' 1  1  5 
'dog' 1  1  5 
'cat' 1  1  5 
'dog' 1  2  6 
die Anzahl der verschiedenen Reihen in dem gleichen Zeile Feld zu bekommen versuchen

die Ausgabe für diesen Tisch sein sollte:

Function count 
'dog' 2 
'cat' 1 

weil es zwei verschiedene Reihen für ‚Hund‘ (ein Teil des Feldes unterschiedlich sind) und eine Zeile für ‚Katze‘

vielen Dank

+2

Diese Art von Problem kann – Strawberry

Antwort

3

Unter der Annahme, dass Sie auf einer bestimmten Teilmenge von Feldern identische Zeilen basierend zählen möchten, dies wäre:

SELECT func, COUNT(*) FROM (
    SELECT DISTINCT func, field1, field2 FROM yourtable 
) AS tmp GROUP BY func; 

Dieser erste distincts alle Zeilen, so dass Sie

'dog' 1  1  5 
'cat' 1  1  5 
'dog' 1  2  6 

und dann bekommen damit zählt das erste Feld, so dass 2 und 1.

Sie können sogar so etwas wie

SELECT func, COUNT(*) AS different, SUM(total) AS total FROM (
    SELECT func, field1, field2, field3, COUNT(*) AS total 
      FROM yourtable 
    GROUP BY func, field1, field2, field3 
) AS tmp GROUP BY func; 
tun

, die geben:

func different total 
dog 2   3 
cat 1   1 
+1

Sie verpassten die 'Gruppe armer Design symptomatisch by' –

+0

Danke, @JorgeCampos. Ich schätze, ich habe irgendwie aus der Hüfte gefeuert :-( – LSerni

3

Dies sollte Ihnen die Ergebnisse, die Sie suchen:

Select Function, Count(*) As Count 
From 
(
    Select Distinct 
      Function, 
      Field1, 
      Field2, 
      Field3 
    From YourTable 
) As A 
Group By Function 
Verwandte Themen