Was soll ich tun, wenn ich auch andere Felder aus 'my_table' auswählen möchte? Mit anderen Worten, ein anderer Wert;
Grep
7
Was ist, wenn mehr als ein Wert nicht immer gleich erscheint (was maximal ist)? In diesem Fall, wenn drei auch zweimal erschienen? LIMIT 1 zeigt nur einen Datensatz
mustafa1993
1
@ mustafa1993SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
Ahmed Syed
Warum funktioniert es nicht, wenn ich hinzufüge WHERE 'value_occurrence' = 1?
Schweizer
1
@swisswiss müssen Sie HAVINGanstelle von WHEREin diesem Fall verwenden.
Ich wusste nicht, dass man COUNT(*)direkt in der verwenden kann ORDER BY. Ich wusste, dass es einige Einschränkungen in Bezug auf GROUP BY/ HAVINGund aggregierte Spalten gibt, und ich ging immer davon aus, dass dies nicht funktionieren würde.
Mihai Stancu
21
Betrachten wir den Tabellennamen als tblpersonund den Spaltennamen als city. Ich möchte die am häufigsten wiederholte Stadt aus der Stadtspalte abrufen:
select city,count(*)as nor from tblperson
groupby city
having count(*)=(select max(nor)from(select city,count(*)as nor from tblperson groupby city) tblperson)
Sie müssen auch die COUNT-Funktion in den Abschnitt ORDER BY verschieben, um den folgenden Fehler zu vermeiden: Es kann nur ein Ausdruck in der Auswahlliste angegeben werden, wenn die Unterabfrage nicht mit EXISTS eingeführt wird
Saba Jamalian
1
Angenommen, Tabelle ist ' SalesLT.Customer' und die Spalte, die Sie herausfinden möchten, ist ' CompanyName' und AggCompanyNameist ein Alias.
Select CompanyName, Count(CompanyName)as AggCompanyName from SalesLT.Customer
groupby CompanyName
OrderBy Count(CompanyName)Desc;
Wenn Sie LIMIT nicht verwenden können oder LIMIT keine Option für Ihr Abfragetool ist. Sie können stattdessen "ROWNUM" verwenden, benötigen jedoch eine Unterabfrage:
@Prabhu in MySQL verwenden Sie LIMIT 1stattdessen; Die Syntax wird in der akzeptierten Antwort angezeigt.
ToolmakerSteve
0
Wenn Sie eine ID-Spalte haben und für jede ID die sich am meisten wiederholende Kategorie aus einer anderen Spalte suchen möchten, können Sie die folgende Abfrage verwenden:
Antworten:
Ersetzen
column
undmy_table
. Erhöhen1
Sie, wenn Sie dieN
häufigsten Werte der Spalte anzeigen möchten .quelle
SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
WHERE 'value_occurrence' = 1
?HAVING
anstelle vonWHERE
in diesem Fall verwenden.Versuchen Sie etwas wie:
quelle
COUNT(*)
direkt in der verwenden kannORDER BY
. Ich wusste, dass es einige Einschränkungen in Bezug aufGROUP BY
/HAVING
und aggregierte Spalten gibt, und ich ging immer davon aus, dass dies nicht funktionieren würde.Betrachten wir den Tabellennamen als
tblperson
und den Spaltennamen alscity
. Ich möchte die am häufigsten wiederholte Stadt aus der Stadtspalte abrufen:Hier
nor
ist ein Aliasname.quelle
Die folgende Abfrage scheint für mich in der SQL Server-Datenbank gut zu funktionieren:
Ergebnis:
quelle
Zur Verwendung mit SQL Server.
Da es darin keine Unterstützung für Limit-Befehle gibt.
In diesem Fall können Sie den Befehl top 1 verwenden, um den maximal vorkommenden Wert in der jeweiligen Spalte zu ermitteln (Wert).
quelle
Angenommen, Tabelle ist '
SalesLT.Customer
' und die Spalte, die Sie herausfinden möchten, ist 'CompanyName
' undAggCompanyName
ist ein Alias.quelle
Wenn Sie LIMIT nicht verwenden können oder LIMIT keine Option für Ihr Abfragetool ist. Sie können stattdessen "ROWNUM" verwenden, benötigen jedoch eine Unterabfrage:
quelle
ROWNUM
LIMIT 1
stattdessen; Die Syntax wird in der akzeptierten Antwort angezeigt.Wenn Sie eine ID-Spalte haben und für jede ID die sich am meisten wiederholende Kategorie aus einer anderen Spalte suchen möchten, können Sie die folgende Abfrage verwenden:
Tabelle:
Abfrage:
Ergebnis:
quelle
Eine Möglichkeit, die ich gerne benutze, ist:
wählen ,ANZAHL() als VAR1 aus Table_Name
gruppiere nach
Bestellung per VAR1 absteigend
Limit 1
quelle