Ich habe eine SQL-Auswahlabfrage, die eine Gruppe von hat. Ich möchte alle Datensätze nach der Gruppe nach Anweisung zählen. Gibt es dafür einen Weg direkt von SQL? Wenn ich beispielsweise eine Tabelle mit Benutzern habe, möchte ich die verschiedenen Städte und die Gesamtzahl der Benutzer auswählen
select town, count(*) from user
group by town
Ich möchte eine Spalte mit allen Städten und eine andere mit der Anzahl der Benutzer in allen Zeilen haben.
Ein Beispiel für das Ergebnis mit 3 Städten und insgesamt 58 Benutzern ist:
Town Count
Copenhagen 58
NewYork 58
Athens 58
Antworten:
Dies wird tun, was Sie wollen (Liste der Städte mit der Anzahl der Benutzer in jedem):
Sie können die meisten Aggregatfunktionen verwenden, wenn Sie verwenden
GROUP BY
.Update (nach Änderung der Frage und Kommentare)
Sie können eine Variable für die Anzahl der Benutzer deklarieren und auf die Anzahl der Benutzer festlegen und dann damit auswählen.
quelle
*
... Das OP beantwortete seine eigene Frage nicht, schien sie aber nicht einmal zu testen. Ich bestätige nur, dass sie korrekt ist :) fredosaurus.com/notes-db/select/groupby.htmlSie können verwenden
COUNT(DISTINCT ...)
:quelle
town
Spalte, und es istCOUNTs
das Falsche (Stadt statt Benutzer).Der andere Weg ist:
quelle
Mit Oracle können Sie Analysefunktionen verwenden:
Sie können auch eine Unterabfrage verwenden:
quelle
Wenn Sie nach Anzahl bestellen möchten (klingt einfach, aber ich kann auf dem Stapel keine Antwort darauf finden, wie das geht), können Sie Folgendes tun:
quelle
Zehn nicht gelöschte Antworten; Die meisten tun nicht das, wonach der Benutzer gefragt hat. In den meisten Antworten wurde die Frage falsch verstanden, da angenommen wurde, dass in jeder Stadt 58 Benutzer statt insgesamt 58 Benutzer vorhanden sind . Selbst die wenigen, die richtig sind, sind nicht optimal.
SHOW session status LIKE 'Handler%';
Im Kontext des OP:
Da es nur eine Zeile von gibt
tot
,CROSS JOIN
ist die nicht so umfangreich, wie es sonst sein könnte.Das übliche Muster ist
COUNT(*)
stattCOUNT(town)
. Letzteres impliziert, dass geprüfttown
wird , ob es nicht null ist, was in diesem Zusammenhang nicht erforderlich ist.quelle
Sie können DISTINCT innerhalb des COUNT verwenden, wie es Milkovsky gesagt hat
in meinem Fall:
Dadurch wird die Anzahl der Antwortstimmen ermittelt, die als dieselbe Benutzer-ID wie eine Anzahl betrachtet werden
quelle
Ich weiß, dass dies ein alter Beitrag in SQL Server ist:
quelle
IFNULL
anstelle vonISNULL
) führt zu unterschiedlichen Zahlen für jede Stadt. Der Benutzer wollte die Summe. Nach der Frage ist 58, nicht 174, die Summe.Wenn Sie die Stadt und die Gesamtzahl der Benutzer auswählen möchten, können Sie die folgende Abfrage verwenden:
quelle
User
.Wenn Sie die Option Alle Abfragen mit Zählung auswählen verwenden möchten, versuchen Sie Folgendes ...
quelle
Versuchen Sie den folgenden Code:
quelle