0Pricing
SQL Academy · Ders

Benzersiz Değerleri Sayma

COUNT(DISTINCT ...) kullanımını uygulamalı öğrenin.

Benzersiz Değerleri Sayma, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

Benzersiz Değerler Neden Sayılır?

COUNT(*) kullandığınızda, yinelenenler dahil her satırı sayarsınız. Ancak bazen yalnızca bir sütunda kaç benzersiz değer bulunduğunu bilmek istersiniz.

Örneğin: müşterileriniz hangi ülkelerden geliyor? Geçen ay kaç benzersiz ürün sipariş edildi? İşte bu noktada COUNT(DISTINCT ...) devreye girer.

Örnek Tablo Oluşturma

Üzerinde pratik yapmak için bir siparişler tablosu oluşturalım. Her siparişte bir müşteri adı, bir ürün ve bir ülke bulunur.

Bazı müşteri ve ülkelerin birden fazla kez göründüğüne dikkat edin — bu kasıtlıdır; böylece tüm satırları saymakla benzersiz değerleri saymak arasındaki farkı görebiliriz.

CREATE TABLE orders (
  id INT,
  customer VARCHAR(50),
  product VARCHAR(50),
  country VARCHAR(50)
);

INSERT INTO orders VALUES
  (1, 'Alice', 'Laptop', 'USA'),
  (2, 'Bob', 'Phone', 'UK'),
  (3, 'Alice', 'Tablet', 'USA'),
  (4, 'Carol', 'Laptop', 'Canada'),
  (5, 'Bob', 'Laptop', 'UK'),
  (6, 'Dave', 'Phone', 'USA'),
  (7, 'Carol', 'Phone', 'Canada'),
  (8, 'Eve', 'Tablet', 'Germany');

COUNT(*) ve COUNT(DISTINCT) Karşılaştırması

Her iki sorguyu çalıştırıp sonuçları karşılaştırın. COUNT(*) her satır için bir tane olmak üzere 8 döndürür. COUNT(DISTINCT müşteri) 5 döndürür — çünkü yalnızca 5 benzersiz müşteri vardır (Alice, Bob, Carol, Dave, Eve).

Temel fikir şudur: COUNT(DISTINCT column) yinelenen değerleri yok sayar ve yalnızca benzersiz olanları sayar.

SELECT COUNT(*) AS total_orders,
       COUNT(DISTINCT customer) AS unique_customers
FROM orders;

Benzersiz Ülkeleri Sayma

Müşterilerimizin kaç farklı ülkeden geldiğini bulalım. siparişler tablosunda 8 satır olmasına rağmen, bazı satırlar aynı ülkeyi paylaşır.

Her birinin kaç kez göründüğünden bağımsız olarak sonuç 4 olacaktır: USA, UK, Kanada ve Almanya.

SELECT COUNT(DISTINCT country) AS unique_countries
FROM orders;

Benzersiz Ürünleri Sayma

Aynı örüntüyü herhangi bir sütuna uygulayabiliriz. Burada kaç farklı ürünün sipariş edildiğini sayıyoruz.

'Dizüstü bilgisayar' üç kez ve 'Telefon' üç kez görünmesine rağmen her ürün yalnızca bir kez sayılır. Yanıt 3'tür: Dizüstü bilgisayar, Telefon, Tablet.

SELECT COUNT(DISTINCT product) AS unique_products
FROM orders;

COUNT(DISTINCT) ile WHERE Kullanımı

Saymadan önce satırları daraltmak için COUNT(DISTINCT ...) ifadesini bir WHERE yan tümcesiyle birleştirebilirsiniz. Burada yalnızca USA'deki müşteriler tarafından sipariş edilen benzersiz ürünleri sayıyoruz.

Yalnızca ülke = 'USA' olan satırlar dikkate alınır, ardından bu satırlardaki benzersiz ürünler sayılır.

SELECT COUNT(DISTINCT product) AS usa_unique_products
FROM orders
WHERE country = 'USA';

GROUP BY ile COUNT(DISTINCT)

GROUP BY ile birlikte kullanıldığında COUNT(DISTINCT ...), grup başına benzersiz sayılar verir. Bu sorgu şu soruyu yanıtlar: her ülke için kaç benzersiz müşteri sipariş verdi?

Her grup bağımsız olarak işlenir; bu nedenle bir grup içindeki yinelenenler sayımdan önce kaldırılır.

SELECT country,
       COUNT(DISTINCT customer) AS unique_customers
FROM orders
GROUP BY country
ORDER BY unique_customers DESC;

Birden Çok Sütundaki Benzersiz Değerleri Sayma

Aynı SELECT içinde birkaç COUNT(DISTINCT ...) ifadesi kullanabilirsiniz. Bu, kardinaliteye — her sütunun kaç benzersiz değer barındırdığına — tek bir sorguda hızlıca genel bakış sağlar.

Kardinalite, yeni bir veri kümesini incelerken kullanışlı bir ölçüttür.

SELECT COUNT(DISTINCT customer) AS unique_customers,
       COUNT(DISTINCT product)  AS unique_products,
       COUNT(DISTINCT country)  AS unique_countries
FROM orders;

NULL Değerlerinin Ele Alınışı

Normal COUNT(column) gibi COUNT(DISTINCT column) da NULL değerlerini yok sayar. NULL, benzersiz bir değer olarak sayılmaz.

Bu örnekte iki satırda NULL ülke değeri bulunur. Sonuç yine 5 değil, NULL olmayan 4 benzersiz ülkedir.

INSERT INTO orders VALUES
  (9,  'Frank', 'Phone',  NULL),
  (10, 'Grace', 'Laptop', NULL);

SELECT COUNT(DISTINCT country) AS unique_countries_no_null
FROM orders;

COUNT(*), COUNT(sütun) ve COUNT(DISTINCT sütun) Karşılaştırması

Üç COUNT biçimini yan yana görmek yararlı olacaktır:

  • COUNT(*) — NULL değerler dahil her satırı sayar
  • COUNT(ülke) — ülke değeri NULL olmayan satırları sayar
  • COUNT(DISTINCT ülke) — benzersiz, NULL olmayan ülke değerlerini sayar

Farkları doğrulamak için bunu güncellenmiş tabloda çalıştırın (şimdi 10 satır var ve 2 satırda ülke değeri NULL).

SELECT COUNT(*)                AS total_rows,
       COUNT(country)          AS non_null_countries,
       COUNT(DISTINCT country) AS unique_countries
FROM orders;

Gerçek Dünya Kullanım Örneği: Günlük Etkin Kullanıcılar

Analitikte COUNT(DISTINCT ...) kullanımının en yaygın örneklerinden biri Günlük Etkin Kullanıcıları (DAU) saymaktır. Elinizde bir olay günlüğü vardır ve her gün kaç benzersiz kullanıcının etkin olduğunu bilmek istersiniz.

Tarihe göre GROUP BY uygulayıp COUNT(DISTINCT kullanıcı_kimliği) kullanarak gün başına benzersiz kullanıcı sayısını elde edebilirsiniz — aynı kullanıcının birden çok kez tıklamasından kaynaklanan yinelenenler otomatik olarak hariç tutulur.

CREATE TABLE user_events (
  event_date DATE,
  user_id    INT
);

INSERT INTO user_events VALUES
  ('2024-01-01', 1), ('2024-01-01', 2), ('2024-01-01', 1),
  ('2024-01-02', 2), ('2024-01-02', 3), ('2024-01-02', 2),
  ('2024-01-03', 1), ('2024-01-03', 4);

SELECT event_date,
       COUNT(DISTINCT user_id) AS daily_active_users
FROM user_events
GROUP BY event_date
ORDER BY event_date;

Kısa Kontrol

COUNT(DISTINCT ...) ile ilgili bu soruyla anlayışınızı sınayın.

Ders Özeti

Harika çalıştınız! COUNT(DISTINCT ...) hakkında öğrendiklerinizin özeti:

  • COUNT(DISTINCT column) bir sütundaki yalnızca benzersiz, NULL olmayan değerleri sayar.
  • COUNT(*)'dan (tüm satırlar) ve COUNT(column)'dan (NULL olmayan satırlar) farklıdır.
  • Saymadan önce satırları filtrelemek için WHERE ile birlikte çalışır.
  • Grup başına benzersiz değerleri saymak için GROUP BY ile birlikte çalışır.
  • NULL değerleri benzersiz sayıma her zaman dahil edilmez.
  • Aynı SELECT içinde birden çok COUNT(DISTINCT ...) ifadesi bulunabilir.
  • Yaygın gerçek dünya kullanımları arasında benzersiz kullanıcıları, ürünleri, ülkeleri ve oturumları saymak yer alır.

Bu işlevde ustalaşmak, veri keşfi ve analitik için size güçlü bir araç kazandırır.

Sıkça Sorulan Sorular

“Benzersiz Değerleri Sayma” dersi ücretsiz mi?

Evet — “Benzersiz Değerleri Sayma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“Benzersiz Değerleri Sayma” dersinde ne öğreneceğim?

COUNT(DISTINCT ...) kullanımını uygulamalı öğrenin. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Benzersiz Değerleri Sayma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. SELECT DISTINCT Temelleri
  2. Birden Çok Sütunda DISTINCT
  3. PostgreSQL DISTINCT ON
  4. Benzersiz Değerleri Sayma
← SQL Academy Sayfasına Dön