Bir sütundaki farklı değerlerin sayısını bulmak için SQL


342

Bir sütundaki tüm farklı değerleri aşağıdaki yollarla seçebilirim:

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

Ancak bu sorgudan satır sayısını nasıl alabilirim? Bir alt sorgu gerekli mi?


1
Hangi SQL Server sürümünü kullanıyorsunuz?
Kevin Fairchild

Yanıtlar:


614

DISTINCTAnahtar kelimeyi COUNTtoplama işlevi içinde kullanabilirsiniz :

SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name

Bu, yalnızca söz konusu sütun için ayrı değerleri sayar.


7
Düzgün, orada farklı anahtar kelime koyabilirsiniz bilmiyordum.
Christian Oudard

13
ayrıca gruplar üzerinde çalışıyorselect A,COUNT(DISTINCT B) from table group by A
tmanthey

6
bu örneği birden çok sütunda farklı olacak şekilde genişletebilir misiniz?
eugene

11 yıl sonra ve bu hala yararlı
wundermahn

176

Bu size farklı sütun değerleri ve her değerin sayısını verir. Genellikle her iki bilgiyi de bilmek istiyorum.

SELECT [columnName], count([columnName]) AS CountOf
FROM [tableName]
GROUP BY [columnName]

60
Gruplandırdığınız için columnName, zaten sadece bir kez farklı değerler alıyorsunuz ve distinctanahtar kelime burada hiçbir şey yapmıyor. Onsuz sorguyu deneyin, sonuç kümesi tamamen aynıdır.
Antti29

26

Count () öğesinin null değerleri göz ardı ettiğini unutmayın, bu nedenle null değerine kendi ayrı değeri olarak izin vermeniz gerekiyorsa aşağıdaki gibi zor bir şey yapabilirsiniz:

select count(distinct my_col)
       + count(distinct Case when my_col is null then 1 else null end)
from my_table
/

Sanırım vaka case when my_col is null then 1 else my_col end
James Jensen

Açıklık için:SELECT my_col, COUNT(my_col) + COUNT(CASE WHEN my_col IS NULL THEN 1 ELSE NULL END) as CountOf from my_Table GROUP BY my_col
Michael Paulukonis

count (*) null değerlerini içerir
PragmaticProgrammer

1
@PragmaticProgrammer Sanırım, ama null bir satır diye bir şey yoktur, sadece null bir değerdir ve count(*)özellikle bir satır sayısıdır.
David Aldridge

20

Sütun_adı'nın benzersiz değerlerinin sql toplamı ve sıklığa göre sıralanmış:

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC;

1
Kesinlikle en iyi cevap IMO
Briford Wylie

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

Bu, farklı sütun gruplarının sayısını verecektir.


11
SELECT COUNT(DISTINCT column_name) FROM table as column_name_count;

o ayrı sütayı saymalı, sonra bir takma ad vermelisin.


5
select Count(distinct columnName) as columnNameCount from tableName 

0

**

Aşağıdaki SQL'i kullanarak Oracle 11g'de farklı sütun değeri sayısını elde edebiliriz .

**

Select count(distinct(Column_Name)) from TableName

0
select count(distinct(column_name)) AS columndatacount from table_name where somecondition=true

Farklı / farklı verileri saymak için bu sorguyu kullanabilirsiniz. Teşekkürler


0

MS SQL Server 2012'den sonra pencere işlevini de kullanabilirsiniz.

   SELECT column_name, 
   COUNT(column_name) OVER (Partition by column_name) 
   FROM table_name group by column_name ; 

-8

Sayım (farklı ({fieldname})) gereksiz

Basitçe Say ({fieldname}) bu tablodaki tüm farklı değerleri verir. Size (tabiki kadar) sadece tablonun Sayısını vermeyecektir [yani Tablodaki Sayım (*) ile aynı DEĞİL]


2
Hayır, bu doğru değil . count(field)satır sayısını verir fieldolup not null.
Antti29
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.