Tekrar Eden Kayıtları Saymak ve Gruplamak İçin SQL Sorgusunu Anlamak

Veritabanı yönetimi alanında, geliştiricilerin karşılaştığı yaygın bir zorluk, bir veri kümesindeki tekrar eden kayıtları verimli bir şekilde tanımlamaktır. Bu, veri bütünlüğünü korumak ve veri kümeleri üzerinde gerçekleştirilen analizlerin doğru bilgileri yansıtmasını sağlamak için kritik bir öneme sahiptir. Bu blog yazısında, bir tabloda Name değerinin iki veya daha fazla kez göründüğü kayıtları almayı sağlayan basit bir SQL sorgusunu keşfedeceğiz.

Senaryo: Veri Kümesi

Aşağıdaki gibi yapılandırılmış basit bir veri kümesini düşünün:

Anahtar İsim
1 Dan
2 Tom
3 Jon
4 Tom
5 Sam
6 Dan

Bu veri kümesinden hangi isimlerin iki veya daha fazla kez tekrarlandığını bulmak istiyoruz. Örneğin, bu durumda hem Dan hem de Tom birden fazla kez geçmektedir, ancak özellikle tekrar eden isimleri çekmekle ilgileniyoruz.

SQL Sorgusunu Hazırlama

Sorunumuzun çözümü, SQL’de COUNT fonksiyonunu GROUP BY ifadesi ile birlikte kullanmaktan geçiyor. Sorguyu adım adım inceleyelim:

SQL Sorgusu

SELECT Name, COUNT(Name) AS Count 
FROM Table
GROUP BY Name
HAVING COUNT(Name) > 1
ORDER BY COUNT(Name) DESC;

Sorgu Bileşenlerinin Açıklaması

  • SELECT Name, COUNT(Name) AS Count: Bu sorgu parçası, Name sütununu seçer ve her bir ismin kaç kez geçtiğini sayar. Sonuç, Count olarak etiketlenir.

  • FROM Table: Table ifadesinin yerini gerçek veri kümesi tablonuzun adı ile değiştirmelisiniz. Bu, SQL’e hangi tablodan sorgulama yapacağını belirtir.

  • GROUP BY Name: Bu, sonuçları isimlere göre gruplar; yani tüm aynı isimler tek bir kayıt altında birleştirilir.

  • HAVING COUNT(Name) > 1: Bu filtre, yalnızca birden fazla kez görünen isimlerin son sonuçta yer almasını sağlar.

  • ORDER BY COUNT(Name) DESC: Son olarak, bu sonuçları en sık geçen isimlerin önce görünmesi için sıralar.

Beklenen Çıktı

Yukarıdaki sorguyu veri kümesinde çalıştırdığınızda aşağıdaki gibi bir çıktı alırsınız:

İsim
Tom
Dan

Bu çıktı, iki veya daha fazla kez geçen isimleri gösterir; bu örneğimizde Tom ve Dan‘dir.

Ekstra İpucu: Yinelenen Kayıtları Silme

Yinelenen kayıtları saymanın ve gruplamanın yanı sıra, tablonuzdan yinelenen kayıtları kaldırmanız da gerekli olabilir. İşte bunu nasıl yapabileceğiniz:

Yinelenen Kayıtları Silmek İçin SQL Sorgusu

DELETE FROM Table
WHERE Key IN (
    SELECT MAX(Key)
    FROM Table
    GROUP BY Name
    HAVING COUNT(Name) > 1
);

Silme Sorgusunun Açıklaması

  • DELETE FROM Table: Bu, belirtilen tablodan belirli kayıtları sileceğimizi gösterir.

  • WHERE Key IN: Bu ifade, hangi kayıtların silineceğine dair koşulu tanımlar; alt sorgunun sonuçlarına dayanmaktadır.

  • SELECT MAX(Key): Bu bölüm, tablodaki her isim için maksimum (veya en son) anahtarı bulur.

  • GROUP BY Name HAVING COUNT(Name) > 1: Önceki sorgumuzla benzer şekilde çalışır; yalnızca yinelenen isimleri dikkate alır.

Sonuç

Özetle, SQL veritabanlarınızda tekrar eden değerleri etkili bir şekilde yönetmek, basit sorgular kullanılarak gerçekleştirilebilir. SELECT, COUNT, GROUP BY ve HAVING kombinasyonu, veri kümenizdeki tekrar eden isimleri tanımlamak için şık bir yol sunar. Ayrıca, silme sorgularını anladığınızda, temiz bir veri kümesini verimli bir şekilde koruyabilirsiniz. Unutmayın, kayıtlarınızı düzenli tutmak, doğru veri analizi ve raporlama için esastır.

Mutlu sorgulamalar!