Mudah mencari data yang duplicate dengan SQL


Mudah mencari data yang duplicate dengan SQL


Membuat validasi adalah penting untuk memastikan data yang disimpan sesuai harapan. Ada yang melakukan validasi dari sisi aplikasi sebelum akhirnya dimasukan ke database. Atau, ada juga yang dilakukan dari sisi database, yaitu dengan memdefinisikannya langsung saat membuat tabel. Umpanya, kita akan membuat tabel employee dengan definisi sebagai berikut:
  1. ID harus unique.
  2. Nama tidak boleh kosong
  3. dan lain sebagainya.
Namun, kadang-kadang kita lupa untuk melakukan hal itu sehingga banyak data-data yang tidak diharapkan masuk, umpanya terjadi banyak duplikasi. Akibatnya, aplikasi akan error atau menghasilkan informasi yang tidak sesuai.
Salah satu untuk mengetahui data yang duplicate adalah dengan menampilkan semua data lalu membandingkannya satu persatu. Contoh, kita tampilkan semua data employee dengan mengetikan perintah berikut:
1
SELECT * FROM employee
Lalu kita perhatikan isi tabel tersebut kemudian bandingkan satu-persatu. Jika kita punya data employee yang jumlah 20, mungkin cara seperti itu cukup. Tapi, jika jumlah data lebih dari 100 atau 1000 tentu cara seperti itu tidak efektif. Selain banyak memakan waktu, peluang salah hitung kemungkinan besar.
Cara lain adalah dengan menggunakan SQL seperti ini:
1
2
3
4
SELECT employee_id, COUNT(employee_id) AS count
FROM hr_employee
GROUP BY employee_id
HAVING COUNT(employee_id) > 1;
Query tersebut akan menghasilkan informasi seperti ini:
employee_idcount
23622
23612
23992
23602
SQL diatas dapat kita gunakan untuk membantu memperbaiki data-data yang duplicate. Kenapa ? bukankah SQL di atas hanya menampilkan data yang duplicate ? betul, SQL tersebut sama sekali tidak melakukan update data. Tetapi, bukankah sebelum melakukan update data terlebih dahulu kita harus tahu data yang diakan di-update ?




SELECT NIK, COUNT(*) duplikat FROM user GROUP BY NIK HAVING duplikat > 1

SELECT KD_TOKO, COUNT(*) duplikat FROM AREA GROUP BY KD_TOKO HAVING duplikat > 1

===

SELECT username, COUNT(*) duplikat FROM users GROUP BY username HAVING COUNT(duplikat)  > 1

===

SELECT
    first_name, COUNT(first_name),
    last_name,  COUNT(last_name),
    email,      COUNT(email)
FROM
    users
GROUP BY
    first_name , 
    last_name , 
    email
HAVING  COUNT(first_name) > 1
    AND COUNT(last_name) > 1
    AND COUNT(email) > 1;

===

Komentar

Postingan populer dari blog ini

Login, Session, dan Logout

Cara Membuat File Setup / Installer Aplikasi Sendiri dengan Inno Setup Compiler