que dois-je faire si je veux également sélectionner un autre champ dans «ma_table»? En d'autres termes, une autre valeur;
grep
7
que se passe-t-il si plus d'une valeur apparaît le même nombre de fois (ce qui est max)? Dans ce cas, si trois sont également apparus deux fois? LIMIT 1 n'affichera qu'un seul enregistrement
mustafa1993
1
@ mustafa1993SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
Ahmed Syed
pourquoi ça ne marche pas quand j'ajoute WHERE 'value_occurrence' = 1?
swisswiss
1
@swisswiss vous devez utiliser à la HAVINGplace de WHEREdans ce cas.
Je ne savais pas que vous pouviez utiliser COUNT(*)directement dans le ORDER BY. Je savais qu'il y avait quelques restrictions concernant GROUP BY/ HAVINGet les colonnes agrégées et j'ai toujours pensé que cela ne fonctionnerait pas.
Mihai Stancu le
21
Considérons le nom de la table comme tblpersonet le nom de la colonne comme city. Je veux récupérer la ville la plus répétée de la colonne ville:
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)
+1 pour l'utilisation de SQL standard qui fonctionnera dans n'importe quelle base de données (alors que LIMIT est spécifique à MySQL, TOP est spécifique à SQL Server).
Dylan Smith
7
La requête ci-dessous semble bien fonctionner pour moi dans la base de données SQL Server:
selectcolumn, COUNT(column)AS MOST_FREQUENT
from TABLE_NAME
GROUPBYcolumnORDERBY COUNT(column)DESC
Résultat:
column MOST_FREQUENT
item1 highest count
item2 second highest
item3 third higest
....
Vous devez également déplacer la fonction COUNT vers la section ORDER BY pour éviter d'obtenir l'erreur suivante: Une seule expression peut être spécifiée dans la liste de sélection lorsque la sous-requête n'est pas introduite avec EXISTS
Saba Jamalian
1
En supposant que la table est « SalesLT.Customer» et que la colonne que vous essayez de comprendre est « CompanyName» et AggCompanyNameest un alias.
Select CompanyName, Count(CompanyName)as AggCompanyName from SalesLT.Customer
groupby CompanyName
OrderBy Count(CompanyName)Desc;
Si vous ne pouvez pas utiliser LIMIT ou LIMIT n'est pas une option pour votre outil de requête. Vous pouvez utiliser "ROWNUM" à la place, mais vous aurez besoin d'une sous-requête:
@Prabhu dans MySQL, vous utilisez à la LIMIT 1place; la syntaxe est indiquée dans la réponse acceptée.
ToolmakerSteve
0
Si vous avez une colonne ID et que vous souhaitez rechercher la catégorie la plus répétitive d'une autre colonne pour chaque ID, vous pouvez utiliser la requête ci-dessous,
Réponses:
Remplacez
column
etmy_table
. Augmentez1
si vous souhaitez afficher lesN
valeurs les plus courantes de la colonne.la source
SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
WHERE 'value_occurrence' = 1
?HAVING
place deWHERE
dans ce cas.Essayez quelque chose comme:
la source
COUNT(*)
directement dans leORDER BY
. Je savais qu'il y avait quelques restrictions concernantGROUP BY
/HAVING
et les colonnes agrégées et j'ai toujours pensé que cela ne fonctionnerait pas.Considérons le nom de la table comme
tblperson
et le nom de la colonne commecity
. Je veux récupérer la ville la plus répétée de la colonne ville:Voici
nor
un nom d'alias.la source
La requête ci-dessous semble bien fonctionner pour moi dans la base de données SQL Server:
Résultat:
la source
À utiliser avec SQL Server.
Comme il n'y a pas de support de commande de limite dans cela.
Vous pouvez utiliser la commande top 1 pour trouver la valeur maximale dans la colonne particulière dans ce cas (valeur)
la source
En supposant que la table est «
SalesLT.Customer
» et que la colonne que vous essayez de comprendre est «CompanyName
» etAggCompanyName
est un alias.la source
Si vous ne pouvez pas utiliser LIMIT ou LIMIT n'est pas une option pour votre outil de requête. Vous pouvez utiliser "ROWNUM" à la place, mais vous aurez besoin d'une sous-requête:
la source
ROWNUM
LIMIT 1
place; la syntaxe est indiquée dans la réponse acceptée.Si vous avez une colonne ID et que vous souhaitez rechercher la catégorie la plus répétitive d'une autre colonne pour chaque ID, vous pouvez utiliser la requête ci-dessous,
Table:
Requete:
Résultat:
la source
Une manière que j'aime utiliser est:
sélectionner ,COMPTER() comme VAR1 à partir de Table_Name
par groupe
ordre par VAR1 desc
limite 1
la source