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.