Pourquoi ne sont pas les valeurs null comptés dans le NOMBRE(columnname)
Donc, je suis tombé sur quelque chose l'autre jour, au travail, en essayant de compter le nombre de valeurs nulles après l'exécution d'une importation.
J'ai donc fait:
select COUNT(columnname) from table
WHERE ColumnName is null
Qui ne compte pas les valeurs null...
Puis je l'ai fait,
select COUNT(*) from table
WHERE ColumnName is null
Qui m'a donné le nombre de.
Donc, quelque chose qui m'énerve est exactement pourquoi ceci ne compte pas les valeurs null.
J'ai regardé cette question (avec une bonne recherche autour de Google...):
Dans SQL, quelle est la différence entre le comte(colonne) et count(*)?,
et tandis qu'il me dit que COUNT(columnname)
ne compte pas les valeurs null, je voudrais savoir exactement pourquoi les valeurs null ne sont pas pris en compte à l'aide de cette méthode?
Merci Beaucoup,
James.
Ce doit être marqué avec le SGBD particulier qui a été utilisé, que les comportements peuvent différer (probablement pas dans ce cas, mais c'est des conseils généraux)
fait, merci underscore_d
OriginalL'auteur James Hatton | 2014-10-14
Vous devez vous connecter pour publier un commentaire.
COUNT
compte des valeurs, puisque la valeur null n'est pas une valeur, il n'est pas comptabilisés.Si vous voulez compter toutes les valeurs null, vous pourriez faire quelque chose comme ceci:
OriginalL'auteur Jeffrey Wieder
Pourquoi ne sont pas les valeurs null compté dans
COUNT(columnname)
?va compter toutes les lignes
va compter toutes les lignes, à l'exception de ceux des lignes où columnname EST NULL.
Et quelle en est la raison?
C'est juste que le
COUNT()
fonction est conçue pour fonctionner de cette façon: les valeurs NULL sont traités différemment des autres valeurs, parce que la valeur NULL peut être considéré comme un espace réservé pour les "inconnus" valeurs", de sorte qu'il est très commun que vous voulez juste pour compter les lignes qui ont une valeur réelle et sauter des lignes qui n'ont pas.Compter les lignes qui n'ont pas de valeur est moins fréquente, et SQL ne pas fournir une fonction pour cela. Mais vous pouvez calculer facilement:
OriginalL'auteur fthiella
Si vous au lieu de faire le compte(1) de ne pas être touché par ce que le filtre que de compter dans la condition.
OriginalL'auteur Jonny Axelsson
COMTE ne compte que les vraies valeurs...null n'est pas une valeur. Donc:
COUNT(*) est utilisé lorsque vous voulez inclure null-mesure des valeurs.
Si vous voulez juste pour compter le nombre de mesure non null valeurs, vous pouvez utiliser la fonction COUNT(columnname)
OriginalL'auteur Hard Tacos
Je ne suis pas sûr si la surcharge est une préoccupation, mais il se présente à moi, pourquoi count(*)? Vous pouvez simplement compter tous les domaines où vous savez pour certain, il y aura des données (telles que le champ ID) et d'ajouter un OÙ (columnName EST NULL).
select count(ID) as NullCount de yourTable où columnName est null
OriginalL'auteur R Loomas
@Jeffrey Wieder mentionné dans sa réponse, le comte compte des valeurs réelles et que nul ne sont pas les valeurs, il les ignore. Mais en cas vous souhaitez compter toutes les lignes d'une colonne dont les valeurs null, vous pouvez le faire -
C'est dans PostgreSQL. Si quelqu'un peut jeter plus de lumière sur pourquoi cela fonctionne, ce serait génial. Ma compréhension est que la mention "is null" à l'intérieur de compter rend compte même des valeurs null. s'il vous Plaît corrigez-moi si je me trompe.
OriginalL'auteur Siddharth Jain