Wie verwenden Sie count und group by an der gleichen select-Anweisung
Ich habe eine sql-select-Abfrage mit einem group by.
Ich möchte die Anzahl aller Datensätze nach der group by-Anweisung.
Gibt es eine Möglichkeit direkt von sql?
Sie haben zum Beispiel eine Tabelle mit Benutzern, die ich auswählen möchten, die verschiedenen Städte, und die Summe Anzahl der Benutzer
select town, count(*) from user
group by town
Ich möchte eine Spalte mit allen Städten und anderen mit der Anzahl der Nutzer in allen Zeilen.
Ein Beispiel für das Ergebnis, wenn man 3 Städte und 58 Benutzer insgesamt :
Town Count
Copenhagen 58
NewYork 58
Athens 58
Sie meinen, Sie wollen Ihr Ergebnis Satz 2 zählt für die Städte und eine für die Benutzer?
Sie wollen also eine Zeile für jede Stadt und in jede Zeile, Spalte 2 enthält die Anzahl aller Benutzer? Also Spalte 2 hat der dieselbe - Wert für jede Zeile? Wenn Sie Bearbeiten, um die Beispiel-Daten und der gewünschten Ausgabe werden wir in der Lage, Ihnen genau, was Sie wollen.
Sie sind Recht AakashM! Ich habe gerade bearbeitet.
Verwandte Frage: stackoverflow.com/questions/5146978/...
Nachteil für die Leser: die Meisten der Antworten, nicht die Antwort für die Abfrage aktualisiert werden.
Sie wollen also eine Zeile für jede Stadt und in jede Zeile, Spalte 2 enthält die Anzahl aller Benutzer? Also Spalte 2 hat der dieselbe - Wert für jede Zeile? Wenn Sie Bearbeiten, um die Beispiel-Daten und der gewünschten Ausgabe werden wir in der Lage, Ihnen genau, was Sie wollen.
Sie sind Recht AakashM! Ich habe gerade bearbeitet.
Verwandte Frage: stackoverflow.com/questions/5146978/...
Nachteil für die Leser: die Meisten der Antworten, nicht die Antwort für die Abfrage aktualisiert werden.
InformationsquelleAutor Stavros | 2010-04-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies zu tun, was Sie wollen (Liste von Städten mit der Anzahl der Benutzer in jeder):
Können Sie die meisten Aggregatfunktionen bei der Verwendung
GROUP BY
.Update (folgende änderung in Frage zu stellen und Kommentare)
Können Sie deklarieren eine variable für die Anzahl der Benutzer und legen Sie es auf die Anzahl der Benutzer dann wählen Sie mit das.
es gibt keinen Unterschied zwischen den beiden Abfragen. Sie wird wieder das gleiche Ergebnis eingestellt. Ich habe nur eine ausgeprägte Abneigung gegen die Verwendung von
*
... Die OP beantwortet seine eigene Frage, aber offenbar nicht selbst testen, bin ich einfach zu überprüfen, dass es korrekt ist 🙂 fredosaurus.com/notes-db/select/groupby.htmlCOUNT(*) möglicherweise nicht gleich COUNT(Stadt). Verwendung * in der ZÄHLUNG ist durchaus gültig...
Ich will, dass die Gesamtzahl der Benutzer. Nicht der Nutzer pro Stadt..
Mal wieder nicht das was ich mir erhofft hatte, aber es scheint, dass dies die beste Lösung.. 😉 Danke
InformationsquelleAutor Oded
Können Sie
COUNT(DISTINCT ...)
:Funktioniert nicht in Kombination mit einer WHERE-Klausel.
funktioniert gut für mich. Hinzufügen WO Sie nach dem AUS.
Ich denke, Sie bedeuten, wenn Sie COUNT(DISTINCT Ort) in der WHERE-Klausel. Das ist, weil es ist eine Aggregatfunktion und bereitgestellt werden muss, in der HAVING-Klausel. Diese SQL-Abfrage ist irreführend, einige wie SELECT COUNT(DISTINCT Ort) verwandelt sich in eine implizite GRUPPE DURCH, sowohl wegen der ANZAHL und VERSCHIEDENE Schlagwörter, jedes Stichwort auf Ihrer eigenen würde auch implizit Gruppe.
Nein, Sie nicht haben, um es zu löschen. Ich finde es einfach irritation, die diese Frage sowie die vielen Antworten haben gegabelt in die Lösung zwei verschiedenen Probleme. Deine Antwort abweicht, die in zwei Möglichkeiten -- keine
town
Spalte, und esCOUNTs
die falsche Sache (Stadt, statt Benutzer).InformationsquelleAutor milkovsky
Der andere Weg ist:
InformationsquelleAutor ZhenYu Wang
Wenn Sie wollen, um durch zählen (klingt einfach, aber ich kann nicht finden, eine Antwort auf stack, wie das zu tun), die Sie tun können:
InformationsquelleAutor sagits
Mit Oracle konnten Sie verwenden, die analytische Funktionen:
Ihre anderen Optionen ist die Verwendung einer Unterabfrage:
Und können Sie die erste (analytische Funktion) option? Was die Datenbank-Plattform verwenden Sie?
Der Letzte ist langsam
InformationsquelleAutor Tommi
Können Sie UNTERSCHIEDLICHE innen der GRAF, wie das, was milkovsky sagte
in meinem Fall:
Diese ziehen die Anzahl der Antworten Stimmen als die gleiche Benutzerkennung wie eine Zählung
InformationsquelleAutor Jur P
Ich weiß, dies ist eine alte post, die in SQL Server:
Die MySQL-äquivalent (
IFNULL
stattISNULL
) führt zu unterschiedlichen zahlen für die einzelnen Stadt; der Benutzer wollte die Summe. Nach der Frage, 58, nicht 174, ist die Summe.InformationsquelleAutor Marcus
Wenn Sie auswählen möchten, die Stadt und der gesamten Anzahl Benutzer verwenden, können Sie diese Abfrage unter:
User
.InformationsquelleAutor Violendy Firdaus
Zehn nicht-gelöschte Antworten; die meisten tun nicht tun, was der Benutzer gefragt. Die meisten Antworten mis-Lesen Sie die Frage als zu denken, dass es sind 58 Benutzer in jeder Stadt anstelle von 58 insgesamt. Selbst die wenigen, die richtig sind, sind nicht optimal.
SHOW session status LIKE 'Handler%';
In der OP-Kontext:
Da gibt es nur eine Reihe von
tot
, dieCROSS JOIN
ist nicht so voluminös wie könnte es anders sein.Das übliche Muster
COUNT(*)
stattCOUNT(town)
. Das letztere bedeutet die überprüfungtown
für nicht null, das ist unnötig, in diesem Zusammenhang.InformationsquelleAutor Rick James
Versuchen Sie den folgenden code:
wir verwenden diesen code, um herauszufinden, wie viele Angestellte für die Gegenwart calc in jedem ccode ( company code ) Beispiel : count(empno) ist 1839 ccode 1 und count(empno) 9421 für ccode 47.
InformationsquelleAutor balajibran
wenn Sie verwenden Möchten, Wählen Sie Alle Abfrage Mit Count-Option, versuchen Sie, diese...
InformationsquelleAutor Prakash