440 votes

SQL pour trouver le nombre de valeurs distinctes dans une colonne

Je peux sélectionner toutes les valeurs distinctes d'une colonne de la manière suivante :

  • SELECT DISTINCT column_name FROM table_name;
  • SELECT column_name FROM table_name GROUP BY column_name;

Mais comment puis-je obtenir le nombre de lignes à partir de cette requête ? Une sous-requête est-elle nécessaire ?

14voto

select count(*) from 
(
SELECT distinct column1,column2,column3,column4 FROM abcd
) T

Cela donnera le nombre de groupes distincts de colonnes.

12voto

Wayne Points 12304
select Count(distinct columnName) as columnNameCount from tableName

2voto

A-B-B Points 797

Pour ce faire, il faut Presto en utilisant OVER :

SELECT DISTINCT my_col,
                count(*) OVER (PARTITION BY my_col
                               ORDER BY my_col) AS num_rows
FROM my_tbl

En utilisant cette OVER est bien sûr facultative. Dans le SQL ci-dessus, j'ai trouvé que spécifier DISTINCT y ORDER BY pour être nécessaire.

Attention : Conformément à la docs en utilisant GROUP BY peut être plus efficace.

1voto

Nilesh Shinde Points 295

En utilisant le SQL suivant, nous pouvons obtenir le colonne distincte valeur compte dans Oracle 11g.

select count(distinct(Column_Name)) from TableName

1voto

Alper Points 31

Après MS SQL Server 2012, vous pouvez également utiliser la fonction fenêtre.

SELECT column_name, COUNT(column_name) OVER (PARTITION BY column_name) 
FROM table_name
GROUP BY column_name

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X