Maison >base de données >tutoriel mysql >Comment compter correctement les noms de programmes distincts dans SQL Server à l'aide de COUNT(DISTINCT) ?

Comment compter correctement les noms de programmes distincts dans SQL Server à l'aide de COUNT(DISTINCT) ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-14 18:51:43232parcourir

How to Correctly Count Distinct Program Names in SQL Server Using COUNT(DISTINCT)?

Comptage des noms de programmes uniques dans SQL Server avec 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn