2017-06-07 2 views
1

Dies ist mein Beispiel Dataset Ich habe Gruppen mit Studenten zu ihnen zählen zugewiesen, wie unten gezeigtmysql die Anzahl der Spiele basieren auf einer Säule

 
uid | groupid   | studentid 
49 | PZV7cUZCnLwNkSS | wTsBSkkg4Weo8R3 
50 | PZV7cUZCnLwNkSS | aIuDhxfChg3enCf 
97 | CwvkffFcBCRbzdw | hEwLxJmnJmZFAic 
99 | CwvkffFcBCRbzdw | OKFfl58XVQMrAyC 
126 | CwvkffFcBCRbzdw | dlH8udyTjNV3nXM 
142 | 2vu1eqTCWVjgE58 | Q01Iz3lC2uUMBSB 
143 | 2vu1eqTCWVjgE58 | vB5s8hfTaVtx3wO 
144 | 2vu1eqTCWVjgE58 | 5O9HA5Z7wVhgi6l 
145 | 2vu1eqTCWVjgE58 | OiEUOXNjK2D2s8F

I zur Ausgabe mit den folgenden Informationen versuchen. Das Problem, das ich habe, ist die Spalte Gruppengröße, die es zur Ausgabe einer Zählung bringt.

 
Studentid  | Groupid   | Group Size 
wTsBSkkg4Weo8R3 | PZV7cUZCnLwNkSS | 2 
aIuDhxfChg3enCf | PZV7cUZCnLwNkSS | 2 
hEwLxJmnJmZFAic | CwvkffFcBCRbzdw | 3 
OKFfl58XVQMrAyC | CwvkffFcBCRbzdw | 3 
dlH8udyTjNV3nXM | CwvkffFcBCRbzdw | 3

ich recherchiert habe, wenn ich Ihnen eine where-Klausel in der Zählung verwenden können, und scheint nicht, wie es mich das machen lassen. Ich dachte darüber nach, eine Summe zu machen, aber das konnte ich auch nicht machen. Ich fühle mich, als würde ich etwas Einfaches vermissen.

+2

Das ist, was Sie wollen. Die wichtigste Sache, um Ihre Frage zu stellen, ist ** was Sie versucht haben **. – tadman

Antwort

1

Eine einfache Möglichkeit, dieses Problem zu lösen, wird mit einer JOIN Aussage:

SELECT a.studentid AS Studentid, a.groupid AS Groupid, COUNT(*) 
FROM table AS a 
    JOIN table AS b ON a.groupid = b.groupid GROUP BY a.studentid, a.groupid

Also hier kommen wir den table mit sich selbst und eine GROUP BY zu Gruppe zur Verwendung auf dem studentid und groupid und dann COUNT(*) verwenden die zählen Anzahl der Zeilen in b, die die gleichen haben groupid.

0

sollten Sie versuchen:

SELECT COUNT(Groupid) AS Groupsize FROM table;

Es scheint, dass einfach zu tun, was Sie versuchen ist. Wenn ich richtig verstehe, eine einfache SELECT COUNT Aussage. Um mehrere Rückkehr des gleichen Wertes auszuschließen, verwenden Sie DISTINCT COUNT SELECT()

1

Try this:

SELECT * 
FROM pony a 
LEFT JOIN (
    SELECT COUNT(*), groupid 
    FROM pony 
    GROUP BY groupid 
) b ON a.groupid = b.groupid 
1

versuchen, diese

SELECT T1.Studentid, T1.Groupid, T2.GroupCount 
FROM Your_Table T1 
INNER JOIN (SELECT Groupid, count(*) AS GroupCount FROM Your_Table GROUP BY Groupid) T2 
ON T1.Groupid = T2.Groupid 
Verwandte Themen