Berurusan dengan nilai duplikat di SQL bisa menjadi tugas yang rumit. Tapi jangan takut, panduan ini hadir untuk meringankan beban Anda.
Data datang dalam segala bentuk dan bentuk, tetapi catatan duplikat adalah bagian penting dari setiap format data. Apakah berurusan dengan data berbasis web atau hanya menavigasi melalui data penjualan truk, analisis Anda akan miring jika Anda memiliki nilai duplikat.
Apakah Anda menggunakan SQL untuk mengolah angka dan melakukan kueri panjang pada tumpukan data Anda? Jika ya, maka panduan mengelola duplikat SQL ini akan sangat menyenangkan bagi Anda.
Berikut adalah beberapa cara berbeda yang dapat Anda gunakan untuk mengelola duplikat menggunakan SQL.
1. Menghitung Duplikat Menggunakan Group by Function
SQL adalah bahasa pemrograman multi-segi yang menawarkan berbagai fungsi untuk menyederhanakan perhitungan. Jika Anda memiliki banyak pengalaman dengan fungsi agregasi di SQL, Anda mungkin sudah familiar dengan mengelompokkan berdasarkan fungsi dan kegunaannya.
Itu kelompokkan oleh fungsi adalah salah satunya perintah SQL paling dasar, yang ideal untuk menangani banyak catatan karena Anda dapat menggunakan fungsi agregat yang berbeda seperti jumlah, menghitung, rata-rata, dan banyak lainnya yang berhubungan dengan kelompokkan oleh berfungsi untuk sampai pada nilai baris-bijaksana yang berbeda.
Bergantung pada skenarionya, Anda dapat menemukan duplikat dengan kelompokkan oleh fungsi dalam satu kolom dan beberapa kolom.
A. Hitung Duplikat dalam Satu Kolom
Misalkan Anda memiliki tabel data berikut dengan dua kolom: ID Produk Dan Pesanan.
ID Produk |
Pesanan |
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 |
Untuk menemukan ID Produk duplikat, Anda dapat menggunakan kelompokkan oleh fungsi dan memiliki klausa untuk memfilter nilai agregat, sebagai berikut:
Pilih ID Produk, menghitung(ID Produk) sebagai Total_hitung
dari sahil.product_dups
kelompokkan berdasarkan productid
memiliki count (productid) > 1
pesan berdasarkan productid;
Seperti pernyataan SQL pada umumnya, Anda harus mulai dengan menentukan kolom yang ingin Anda tampilkan di hasil akhir. Dalam hal ini, kami ingin menampilkan jumlah nilai duplikat di dalam ID Produk kolom.
Di segmen pertama, tentukan ID Produk kolom dalam Pilih penyataan. Itu menghitung fungsi mengikuti ID Produk referensi sehingga SQL memahami tujuan kueri Anda.
Selanjutnya, tentukan tabel sumber menggunakan dari ayat. Sejak menghitung adalah fungsi agregasi, Anda perlu menggunakan kelompokkan oleh berfungsi untuk mengelompokkan semua nilai yang serupa.
Ingat, idenya adalah membuat daftar nilai duplikat di dalam ID Produk kolom. Untuk melakukannya, Anda harus memfilter hitungan dan menampilkan nilai yang terjadi lebih dari satu kali dalam kolom. Itu memiliki klausa memfilter data agregat; Anda dapat menggunakan kondisi, yaitu, hitung (produkid) >1, untuk menampilkan hasil yang diinginkan.
Akhirnya, dipesan oleh klausa mengurutkan hasil akhir dalam urutan menaik.
Outputnya adalah sebagai berikut:
B. Hitung Duplikat dalam Banyak Kolom
Saat Anda ingin menghitung duplikat dalam banyak kolom tetapi tidak ingin menulis banyak kueri SQL, Anda dapat memperluas kode di atas dengan beberapa penyesuaian. Misalnya, jika Anda ingin menampilkan baris duplikat dalam beberapa kolom, Anda dapat menggunakan kode berikut:
Pilih produk, pesanan, menghitung(*) sebagai Total_hitung
dari sahil.product_dups
kelompokkan berdasarkan produkid, pesanan
memiliki count (productid) > 1
pesan berdasarkan productid;
Pada output, Anda akan melihat bahwa hanya dua baris yang ditampilkan. Saat Anda men-tweak kueri dan menambahkan referensi kedua kolom di dalam Pilih pernyataan, Anda mendapatkan jumlah baris yang cocok dengan nilai duplikat.
Alih-alih hitungan (kolom) fungsi, Anda harus lulus menghitung(*) berfungsi untuk mendapatkan baris duplikat. Itu * fungsi beralih melalui semua baris dan mencari baris duplikat alih-alih nilai duplikat individual.
Outputnya ditunjukkan di bawah ini:
Baris yang sesuai dengan ID Produk 14 dan 47 ditampilkan karena nilai pesanannya sama.
2. Menandai Duplikat Dengan Fungsi row_number()
Selagi kelompokkan oleh Dan memiliki kombinasi adalah cara termudah untuk menemukan dan menandai duplikat di dalam tabel, ada cara alternatif untuk menemukan duplikat menggunakan baris_nomor() fungsi. Itu baris_nomor() fungsi merupakan bagian dari Fungsi jendela SQL kategori dan sangat penting untuk memproses kueri Anda secara efisien.
Inilah cara Anda dapat menandai duplikat menggunakan baris_nomor() fungsi:
Pilih produk, pesanan,
row_number() over (partisi berdasarkan urutan productid berdasarkan productid) sebagai sno
dari sahil.product_dups;
Itu baris_nomor() fungsi menyisir setiap nilai ID Produk dan mengasimilasi jumlah perulangan untuk setiap ID. Itu partisi kata kunci memisahkan nilai duplikat dan menetapkan nilai secara kronologis, seperti 1, 2,3, dan seterusnya.
Jika Anda tidak menggunakan partisi kata kunci, Anda akan memiliki nomor seri unik untuk semua ID Produk, yang tidak sesuai dengan tujuan Anda.
Itu dipesan oleh klausa dalam bagian partisi berfungsi saat menentukan urutan penyortiran. Anda dapat memilih antara urutan menaik (default) dan menurun.
Terakhir, Anda dapat menetapkan alias ke kolom untuk mempermudah pemfilteran nanti (jika perlu).
3. Menghapus Baris Duplikat Dari Tabel SQL
Karena nilai duplikat dalam tabel dapat mendistorsi analisis Anda, menghapusnya selama tahap pembersihan data sering kali sangat penting. SQL adalah bahasa berharga yang menawarkan cara untuk melacak dan menghapus nilai duplikat Anda secara efisien.
A. Menggunakan Kata Kunci yang berbeda
Itu berbeda kata kunci mungkin adalah fungsi SQL yang paling umum dan sering digunakan untuk menghapus nilai duplikat dalam sebuah tabel. Anda dapat menghapus duplikat dari satu kolom atau bahkan menduplikasi baris sekaligus.
Inilah cara Anda menghapus duplikat dari satu kolom:
Pilihberbeda ID Produk dari sahil.product_dups;
Output mengembalikan daftar semua ID Produk unik dari tabel.
Untuk menghapus baris duplikat, Anda dapat men-tweak kode di atas sebagai berikut:
Pilihberbeda * dari sahil.product_dups;
Output mengembalikan daftar semua baris unik dari tabel. Melihat hasilnya, Anda akan melihat bahwa ID Produk 14 dan 47 hanya muncul sekali di tabel hasil akhir.
B. Menggunakan Metode Common Table Expression (CTE).
Metode Common Table Expression (CTE) sedikit berbeda dari kode SQL utama. CTE mirip dengan Tabel sementara SQL, dengan satu-satunya perbedaan adalah bahwa mereka virtual, yang dapat Anda rujuk selama eksekusi kueri saja.
Manfaat terbesarnya adalah Anda tidak perlu meneruskan kueri terpisah untuk menghapus tabel ini nanti, karena tabel tersebut tidak ada lagi segera setelah kueri dijalankan. Menggunakan metode CTE, Anda dapat menggunakan kode di bawah ini untuk menemukan dan menghapus duplikat.
dengan cteproducts sebagai
(Pilih produk, pesanan,
row_number() over (partisi berdasarkan urutan productid berdasarkan productid) sebagai sno
dari sahil.product_dups)
Pilih * dari cteproducts
dimana sno = 1;
Anda dapat menjalankan fungsi CTE menggunakan dengan kata kunci; tentukan nama tabel virtual sementara setelah dengan kata kunci. Referensi tabel CTE berguna saat memfilter nilai tabel.
Di bagian selanjutnya, tetapkan nomor baris ke ID Produk Anda menggunakan baris_nomor() fungsi. Karena Anda mereferensikan setiap ID Produk dengan a partisi fungsi, setiap ID berulang memiliki nilai yang berbeda.
Terakhir, filter yang baru dibuat mendengkur kolom di segmen terakhir dengan yang lain Pilih penyataan. Setel filter ini ke 1 untuk mendapatkan nilai unik di hasil akhir.
Belajar Menggunakan SQL dengan Cara Mudah
SQL dan variannya telah menjadi perbincangan di kota, dengan kemampuan bawaannya untuk menanyakan dan menggunakan database relasional. Dari menulis kueri sederhana hingga melakukan analisis rumit dengan sub-kueri, bahasa ini memiliki segalanya.
Namun, sebelum menulis pertanyaan apa pun, Anda harus mengasah keterampilan Anda dan memecahkan kode untuk menjadikan diri Anda seorang pembuat kode yang mahir. Anda dapat mempelajari SQL dengan cara yang menyenangkan dengan menerapkan pengetahuan Anda dalam game. Pelajari beberapa nuansa pengkodean yang mewah dengan menambahkan sedikit kesenangan pada kode Anda.