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 J'ai essayé Allemagne code> et 3 avec pays UK code>. 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 p>
Sélectionnez le pays des clients; code> mais cela me donnera 8 rangées. J'ai essayé Sélectionnez le pays distinct des clients; code> mais cela me donne 2 rangées. J'ai essayé d'utiliser compter code> comme Sélectionnez le nombre distinct (pays) de clients; code> mais je reçois 8 (probablement parce que distinct code> est appliqué sur le jeu de résultats de < Code> Sélectionnez Compte (pays) des clients; Code> Comment puis-je obtenir 2 code>? p>
4 Réponses :
Vous pouvez utiliser équivalent à: p> distinct code> Intérieur Count: select count(*)
from (
select distinct country
from customers
where country is not null
) t;
Le Nombre (pays distinct) code> La requête ne compte pas NULL, mais la requête de la table dérivée fait.
@un cheval sans nom . . . Aucun où code> est nécessaire. Vous pouvez faire compter (pays) code> dans la requête extérieure.
Utiliser à l'intérieur distinct
SELECT count( distinct Country) FROM Customers
Vous pouvez utiliser un pays distinct dans le compte comme ci-dessous:
SELECT count(1), country FROM customers GROUP BY country;
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;
limite code> 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.
Sélectionnez Count (distinct votre_field) ... code>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.