SQL'de yinelenen değerlerle uğraşmak külfetli bir görev olabilir. Ancak korkmayın, bu rehber sizin yükünüzü hafifletmek için burada.

Veriler tüm şekil ve formlarda gelir, ancak yinelenen kayıtlar her veri biçiminin önemli bir parçasıdır. İster web tabanlı verilerle uğraşın, ister bir kamyon dolusu satış verisi arasında gezinin, yinelenen değerleriniz varsa analiziniz çarpık olacaktır.

Sayılarınızı hesaplamak ve veri yığınlarınız üzerinde uzun sorgular gerçekleştirmek için SQL kullanıyor musunuz? Cevabınız evet ise, SQL kopyalarını yönetmeye ilişkin bu kılavuz sizin için mutlak bir zevk olacaktır.

SQL kullanarak kopyaları yönetmek için kullanabileceğiniz birkaç farklı yolu burada bulabilirsiniz.

1. İşleve Göre Grubu Kullanarak Kopyaları Sayma

SQL, hesaplamaları kolaylaştırmak için çeşitli işlevler sunan çok yönlü bir programlama dilidir. SQL'deki toplama işlevleriyle ilgili bol deneyiminiz varsa, zaten aşina olabilirsiniz. işleve ve ne için kullanılabileceğine göre gruplandırma.

bu göre gruplandır

instagram viewer
işlev, bunlardan biridir en temel SQL komutlarıgibi farklı toplama işlevlerini kullanabildiğiniz için birden fazla kayıtla uğraşmak için idealdir. toplam, saymak, ortalamave diğerleri ile bağlantılı olarak göre gruplandır satır bazında farklı bir değere ulaşmak için işlev.

Senaryoya bağlı olarak, kopyaları şu şekilde bulabilirsiniz: göre gruplandır tek bir sütun ve birden çok sütun içinde işlev.

A. Tek Bir Sütunda Yinelenenleri Say

İki sütunlu aşağıdaki veri tablosuna sahip olduğunuzu varsayalım: Ürün kimliği Ve Emirler.

Ürün kimliği

Emirler

2

7

2

8

2

10

9

6

10

1

10

5

12

5

12

12

12

7

14

1

14

1

47

4

47

4

Yinelenen Ürün Kimliklerini bulmak için göre gruplandır işlev ve sahip olmak toplanmış değerleri aşağıdaki gibi filtrelemek için yan tümce:

seçme ürün kimliği, saymak(ürün kimliği) gibi Toplam sayım

sahil.product_dups kaynağından

ürün kimliğine göre grupla

sayısı (productid) > 1 olan

ürün kimliğine göre sipariş;

Tipik bir SQL ifadesinde olduğu gibi, nihai sonuçta görüntülemek istediğiniz sütunları tanımlayarak başlamalısınız. Bu durumda, içindeki yinelenen değerlerin sayısını görüntülemek istiyoruz. Ürün kimliği kolon.

İlk segmentte, Ürün kimliği içindeki sütun seçme ifade. bu saymak fonksiyon aşağıdakileri takip eder Ürün kimliği referans, böylece SQL sorgunuzun amacını anlar.

Ardından, kullanarak kaynak tabloyu tanımlayın. itibaren madde. O zamandan beri saymak bir toplama işlevidir, kullanmanız gerekir göre gruplandır tüm benzer değerleri gruplama işlevi.

Unutmayın, fikir, içindeki yinelenen değerleri listelemektir. Ürün kimliği kolon. Bunu yapmak için, sütunda bir defadan fazla oluşan sayımı ve görüntüleme değerlerini filtrelemeniz gerekir. bu sahip olmak madde, birleştirilmiş verileri filtreler; koşulu kullanabilirsiniz, yani, sayım (ürün kimliği) >1, İstenen sonuçları görüntülemek için.

Son olarak, tarafından sipariş yan tümcesi nihai sonuçları artan düzende sıralar.

Çıktı aşağıdaki gibidir:

B. Birden Çok Sütunda Yinelenenleri Say

Birden çok sütundaki kopyaları saymak istediğinizde, ancak birden çok SQL sorgusu yazmak istemediğinizde, yukarıdaki kodu birkaç ince ayar ile genişletebilirsiniz. Örneğin, birden çok sütunda yinelenen satırları görüntülemek istiyorsanız, aşağıdaki kodu kullanabilirsiniz:

seçme ürün kimliği, siparişler, saymak(*) gibi Toplam sayım

sahil.product_dups kaynağından

ürün kimliğine göre gruplandırma, siparişler

sayısı (productid) > 1 olan

ürün kimliğine göre sipariş;

Çıktıda yalnızca iki satırın görüntülendiğini fark edeceksiniz. Sorguyu değiştirdiğinizde ve içindeki her iki sütunun referansını eklediğinizde seçme deyimi, yinelenen değerlerle eşleşen satırların sayısını alırsınız.

Onun yerine saymak (sütun) işlevini geçmek zorundasınız. saymak(*) yinelenen satırları alma işlevi. bu * işlev tüm satırlar arasında geçiş yapar ve tek tek yinelenen değerler yerine yinelenen satırları arar.

Çıktı aşağıda gösterilmiştir:

Sipariş değerleri aynı olduğu için Ürün Kimliği 14 ve 47 olan karşılık gelen satırlar görüntülenir.

2. Yinelenenleri row_number() İşleviyle İşaretleme

iken göre gruplandır Ve sahip olmak kombinasyonu, bir tablo içinde yinelenenleri bulmanın ve işaretlemenin en basit yoludur, yinelenenleri bulmanın alternatif bir yolu da vardır. satır numarası() işlev. bu satır numarası() işlevin bir parçasıdır SQL penceresi işlevleri kategori ve sorgularınızı verimli bir şekilde işlemek için gereklidir.

kullanarak kopyaları nasıl işaretleyeceğiniz aşağıda açıklanmıştır. satır numarası() işlev:

seçme ürün kimliği, siparişler, 

row_number() over (productid sırasına göre productid tarafından bölümleme) sno olarak

sahil.product_dups'tan;

bu satır numarası() işlevi, her bir Ürün Kimliği değerini tarar ve her bir Kimlik için tekrar sayısını özümser. bu bölme anahtar kelime yinelenen değerleri ayırır ve 1, 2,3 gibi kronolojik olarak değerler atar.

Eğer kullanmazsanız bölme anahtar kelime, amacınıza uygun olmayan tüm Ürün Kimlikleri için benzersiz bir seri numaranız olacaktır.

bu tarafından sipariş bölümleme bölümündeki yan tümce, sıralama düzenini tanımlarken işlevseldir. Artan (varsayılan) ve azalan sıralama arasında seçim yapabilirsiniz.

Son olarak, daha sonra filtrelemeyi kolaylaştırmak için (gerekirse) sütuna bir takma ad atayabilirsiniz.

3. Bir SQL Tablosundan Yinelenen Satırları Silme

Bir tablodaki yinelenen değerler analizinizi çarpıtabileceğinden, veri temizleme aşamasında bunları ortadan kaldırmak genellikle zorunludur. SQL, yinelenen değerlerinizi verimli bir şekilde izlemenin ve silmenin yollarını sunan değerli bir dildir.

A. Farklı Anahtar Kelimeyi Kullanma

bu belirgin anahtar kelime, bir tablodaki yinelenen değerleri kaldırmak için muhtemelen en yaygın ve sık kullanılan SQL işlevidir. Yinelenenleri tek bir sütundan veya hatta yinelenen satırlardan tek seferde kaldırabilirsiniz.

Tek bir sütundan kopyaları şu şekilde kaldırabilirsiniz:

seçmebelirgin ürün kimliği itibaren sahil.product_dups;

Çıktı, tablodaki tüm benzersiz Ürün Kimliklerinin bir listesini döndürür.

Yinelenen satırları kaldırmak için yukarıdaki kodu aşağıdaki gibi düzenleyebilirsiniz:

seçmebelirgin * itibaren sahil.product_dups;

Çıktı, tablodaki tüm benzersiz satırların bir listesini döndürür. Çıktıya baktığınızda, Ürün Kimlikleri 14 ve 47'nin nihai sonuç tablosunda yalnızca bir kez göründüğünü fark edeceksiniz.

B. Ortak Tablo İfadesi (CTE) Yöntemini Kullanma

Ortak Tablo İfadesi (CTE) yöntemi, genel SQL kodundan biraz farklıdır. CTE'ler benzer SQL'in geçici tabloları, tek fark, yalnızca sorgunun yürütülmesi sırasında başvurabileceğiniz sanal olmalarıdır.

En büyük yararı, bu tabloları daha sonra bırakmak için ayrı bir sorgu iletmek zorunda kalmamanızdır, çünkü sorgu yürütülür yürütülmez bunlar ortadan kalkar. CTE yöntemini kullanarak, kopyaları bulmak ve silmek için aşağıdaki kodu kullanabilirsiniz.

ile cteproducts gibi

(seçme ürün kimliği, siparişler,

row_number() over (productid sırasına göre productid tarafından bölümleme) sno olarak

sahil.product_dups'tan)

seçme * itibaren cteproducts

burada sn = 1;

CTE işlevini kullanarak çağırabilirsiniz. ile anahtar kelime; sonra geçici sanal tablonun adını tanımlayın. ile anahtar kelime. CTE tablo referansı, tablonun değerlerini filtrelerken kullanışlıdır.

Bir sonraki bölümde, Ürün Kimliklerinize satır numaralarını atayın. satır numarası() işlev. Her bir Ürün Kimliğine bir bölme işlevinde, yinelenen her kimliğin ayrı bir değeri vardır.

Son olarak, yeni oluşturulanları filtreleyin sno son segmentteki sütun diğeriyle seçme ifade. Son çıktıda benzersiz değerler elde etmek için bu filtreyi 1 olarak ayarlayın.

SQL'i Kolay Şekilde Kullanmayı Öğrenin

İlişkisel veritabanlarını sorgulama ve kullanma konusundaki doğuştan gelen yeteneğiyle SQL ve varyantları, şehrin konuşması haline geldi. Basit sorgular yazmaktan alt sorgularla ayrıntılı analizler yapmaya kadar bu dil her şeyden biraz içeriyor.

Bununla birlikte, herhangi bir sorgu yazmadan önce, kendinizi usta bir kodlayıcı yapmak için becerilerinizi geliştirmeli ve kodları çözmeye başlamalısınız. SQL'i oyunlarda uygulayarak eğlenceli bir şekilde öğrenebilirsiniz. Kodunuza biraz eğlence katarak bazı süslü kodlama nüanslarını öğrenin.