2016-07-20 9 views
2

Zum Beispiel habe ich hier eine Daten habenmysql - mehrere Reihen von COUNT Abfrage

ID Doctor Status 
1  Wooka  Approved 
2  Jamba  Approved 
3  Jamba  Approved 
4  Wooka  Approved 
5  Wooka  Approved 
6  Wooka  Approved 
7  Wooka  Approved 
. .   . 
. .   . 
. .   . 
99  

Für die ersten sieben Zeilen (Demonstrationszwecken nicht beschränkt auf 7) ich es ausgeben möchten wie diese

Doctor Count 
Wooka  5 
Jamba  2 

Obwohl ich nicht sicher bin, wie das in COUNT zu tun()

SELECT COUNT(*) FROM table WHERE status='Approved' 

ich wirklich habe keine Ahnung, wie es flexibel zu machen, was ich habe ich gefragt.

+1

nachschlagen, wie GROUP BY –

Antwort

0

Sie könnten eine limit Klausel in einer Unterabfrage verwenden, die Anzahl der Zeilen zu beschränken zurück, und dann wickeln Sie diese Abfrage mit einer Aggregat-Abfrage, die ein count ausführt:

SELECT doctor, COUNT(*) 
FROM  (SELECT doctor 
      FROM  mytable 
      WHERE status = 'Approved' 
      ORDER BY id ASC 
      LIMIT 7 -- or some other number 
     ) t 
GROUP BY doctor 
+0

Wird das bei mehreren Ärzten funktionieren? – Noobster

+0

@Noobster ja. Das ist, was die 'Group by' Klausel für – Mureinik

+0

Hallo, ja, das funktioniert. Aber ich frage mich, wie wenn ich den ganzen Status zuordnen würde? Wie Approved, Pending, Denied, ... geht die Liste weiter und weiter? – Noobster

2
SELECT 
    t.doctor, 
    COUNT(*) AS c 
FROM 
    table t 
WHERE 
    t.status = 'Approved' 
GROUP BY 
    t.doctor 
+0

Dies entspricht nicht der Anforderung "erste 7 Zeilen". – Mureinik