Maison >base de données >tutoriel mysql >Comment compter correctement les noms de programmes distincts dans SQL Server à l'aide de COUNT(DISTINCT) ?
Ce guide montre comment compter avec précision les noms de programmes uniques dans SQL Server à l'aide de la fonction d'agrégation COUNT(DISTINCT)
. Nous examinerons un problème de requête courant et sa solution.
Le défi :
Considérons un tableau nommé cm_production
contenant des colonnes comme ticket_number
, program_type
, program_name
et push_number
. Le but est de déterminer le nombre de noms de programmes distincts pour chaque program_type
et push_number
. Une première tentative pourrait ressembler à ceci :
<code class="language-sql">DECLARE @push_number INT; SET @push_number = [HERE_ADD_NUMBER]; SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] FROM cm_production WHERE push_number=@push_number GROUP BY program_type</code>
Cette requête, cependant, ne fournit pas le nombre correct de noms de programmes uniques.
La solution :
La bonne approche consiste à utiliser COUNT(DISTINCT)
:
<code class="language-sql">SELECT program_type AS [Type], COUNT(DISTINCT program_name) AS [Count] FROM cm_production WHERE push_number = @push_number GROUP BY program_type</code>
Explication :
COUNT(DISTINCT program_name)
ne compte que les valeurs uniques et non nulles de program_name
au sein de chaque program_type
groupe. Les noms de programmes en double sont ignorés. Cela donne le nombre précis de noms de programmes distincts pour chaque type de programme.
Autres considérations :
Le mot-clé DISTINCT
est compatible avec diverses fonctions d'agrégation, notamment SUM()
, MIN()
et MAX()
. Lorsqu'il est utilisé avec COUNT()
, il est fonctionnellement équivalent à COUNT(DISTINCT 1)
ou COUNT(NOT NULL)
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!