0
votes

Comment utiliser compter et distinct ensemble

J'ai une table avec des noms des pays. Les noms de pays sont dupliqués dans le tableau. Par exemple, disons qu'il y a 8 rangées dans la table, 5 rangées avec pays Allemagne et 3 avec pays UK . Je tiens à compter les pays de la table (par exemple, je devrais obtenir le numéro 2). Mais je suis incapable de trouver la requête

J'ai essayé Sélectionnez le pays des clients; mais cela me donnera 8 rangées. J'ai essayé Sélectionnez le pays distinct des clients; mais cela me donne 2 rangées. J'ai essayé d'utiliser compter comme Sélectionnez le nombre distinct (pays) de clients; mais je reçois 8 (probablement parce que distinct est appliqué sur le jeu de résultats de < Code> Sélectionnez Compte (pays) des clients; Comment puis-je obtenir 2 ?

sql

3 commentaires

Sélectionnez Count (distinct votre_field) ...


Quelle base de données utilisez-vous? La meilleure réponse exacte que vous obtenez peut dépendre de cela.


Merci aux gens. Accepté la première réponse correcte.


4 Réponses :


2
votes

Vous pouvez utiliser distinct code> Intérieur Count: xxx pré>

équivalent à: p>

select count(*)
from (  
  select distinct country
  from customers
  where country is not null
) t;


2 commentaires

Le Nombre (pays distinct) La requête ne compte pas NULL, mais la requête de la table dérivée fait.


@un cheval sans nom . . . Aucun où est nécessaire. Vous pouvez faire compter (pays) dans la requête extérieure.



0
votes

Utiliser à l'intérieur distinct

SELECT count( distinct Country) FROM Customers


0 commentaires

0
votes

Vous pouvez utiliser un pays distinct dans le compte comme ci-dessous:

SELECT count(1), country
FROM customers
GROUP BY country;


0 commentaires

0
votes

Voici un moyen de faire cela à l'aide de fonctions analytiques:

SELECT ROW_NUMBER() OVER (ORDER BY COUNT(*)) cnt
FROM customers
GROUP BY country
ORDER BY cnt DESC
LIMIT 1;


2 commentaires

limite n'est toutefois pas standard SQL


@a_horse_with_no_name Je pensais que la balise était postgres depuis que j'ai vu votre réponse. Quoi qu'il en soit, votre réponse est la voie à suivre, je n'ai donné que cela comme une alternative.