Di dunia SQL, kemampuan untuk menggabungkan data dari beberapa kueri adalah kebutuhan mendasar, dan SQL menyediakan fungsi kuat seperti UNION dan UNION ALL untuk mencapainya.
Seperti yang akan Anda lihat, memahami perbedaan halus antara fungsi UNION dan UNION ALL dalam SQL sangat penting untuk kueri dan pengelolaan data yang efisien. Tutorial ini menjelaskan persamaan, perbedaan, dan skenario penggunaannya menggunakan dataset pendamping untuk membantu Anda mengoptimalkan kueri SQL.
Jawaban Singkat: SQL UNION vs. UNION ALL
Perbedaan utamanya adalah UNION menghapus catatan duplikat, sedangkan UNION ALL menyertakan semua duplikasi. Perbedaan ini tidak hanya mengubah jumlah baris dalam hasil kueri, tetapi juga berdampak pada performa.
Fitur
UNION
UNION ALL
Duplikasi
Menghapus catatan duplikat
Menjaga semua catatan (termasuk duplikat)
Performa
Lebih lambat (Harus mengurutkan/meng-hash data untuk menemukan duplikat)
Lebih cepat (Langsung menambahkan data ke hasil)
Operasi
Teori Himpunan (Union matematis)
Menambahkan / Menumpuk Hasil
Mari pertimbangkan dua tabel contoh, employees_2023 dan employees_2024, yang merepresentasikan catatan karyawan untuk dua tahun berbeda.
Sekarang, mari gabungkan kedua tabel menggunakan fungsi UNION.
SELECT employee_id, name, department FROM employees_2023
UNIONSELECT employee_id, name, department FROM employees_2024;Didukung oleh
employee_id
name
department
1
Alice
HR
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
Pada hasil ini, catatan duplikat dihapus. Sekarang, bandingkan dengan hasil setelah menggunakan UNION ALL.
SELECT employee_id, name, department FROM employees_2023
UNIONALLSELECT employee_id, name, department FROM employees_2024;Didukung oleh
employee_id
name
department
1
Alive
HR
2
Bob
IT
3
Charlie
Finance
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
Pada hasil ini, semua catatan disertakan, dan duplikat tidak dihapus.
Apa itu UNION dalam SQL?
Fungsi UNION menggabungkan hasil dari dua atau lebih kueri SELECT ke dalam satu himpunan hasil, sekaligus menghapus baris duplikat. Setiap pernyataan SELECT dalam UNION harus memiliki jumlah kolom yang sama. Selain itu, tipe datanya harus serupa, dan urutan kolom juga harus sama. Untuk memahami fungsi ini, mari buat dua tabel contoh di bawah.
Kode di atas akan membuat dua tabel yang akan kita gunakan dalam tutorial ini, masing-masing sales_team dan support_team. Anda dapat melihat tabelnya menggunakan kode di bawah.
Catatan dalam tabel support_team. Gambar oleh Penulis
Ini adalah tabel kecil dengan masing-masing tiga catatan, dan nama kolomnya sudah jelas. Sekarang kedua tabel telah dibuat, mari terapkan fungsi UNION.
SELECT employee_id, employee_name
FROM sales_team
UNIONSELECT employee_id, employee_name
FROM support_team;Didukung oleh
Keluaran dari fungsi UNION. Gambar oleh Penulis
Anda dapat melihat bahwa entri duplikat dari employee_id dengan nilai 3 dihapus.
Apa Saja Use Case untuk UNION dalam SQL?
Berikut beberapa use case umum untuk fungsi UNION.
Menggabungkan Hasil dari Tabel Berbeda: Saat Anda ingin menggabungkan data dari beberapa tabel dan memastikan tidak ada catatan duplikat, UNION adalah fungsi andalan.
Menangani Sumber Data Berbeda:UNION berguna saat menggabungkan tabel dari berbagai sumber data.
Menghapus Duplikasi di Antara Kueri: Saat Anda ingin memastikan keunikan himpunan hasil gabungan, gunakan UNION.
Apa itu UNION ALL dalam SQL?
Fungsi UNION ALL menggabungkan hasil dari dua atau lebih kueri SELECT, termasuk semua baris duplikat. Fungsi ini lebih cepat dibanding UNION karena tidak menghapus duplikasi.
SELECT employee_id, employee_name
FROM sales_team
UNIONALLSELECT employee_id, employee_name
FROM support_team;Didukung oleh
Keluaran dari fungsi UNION ALL. Gambar oleh Penulis
Anda dapat melihat bahwa, dalam kasus ini, entri duplikat diulang dan tidak dihapus.
Apa Saja Use Case untuk UNION ALL dalam SQL?
Berikut beberapa use case umum untuk fungsi UNION ALL.
Menggabungkan Hasil dengan Duplikasi: Gunakan UNION ALL saat Anda perlu menggabungkan hasil dari beberapa kueri dan mempertahankan semua baris duplikat.
Pertimbangan Performa:UNION ALL lebih efisien waktu dibanding fungsi UNION, karena tidak memerlukan langkah tambahan untuk menghapus duplikasi.
Mengagregasikan Data dari Periode Berbeda: Saat mengagregasikan data dari periode atau sumber berbeda, dan Anda perlu mempertahankan entri duplikat, UNION ALL lebih disukai.
Pelaporan dan Analisis: Untuk kebutuhan pelaporan di mana setiap catatan, termasuk duplikat, diperlukan, UNION ALL cocok digunakan.
UNION dan UNION ALL: Persamaan dan Perbedaan
Mari buat tabel ringkasan mengenai persamaan dan perbedaannya.
Fitur
UNION
UNION ALL
Baris duplikat
Dihapus
Disertakan
Performa
Lebih lambat
Lebih cepat
Use case
Saat Anda memerlukan catatan unik
Saat Anda memerlukan semua catatan
Ukuran hasil
Lebih kecil
Lebih besar
Perbedaan Sintaks UNION dan UNION ALL di Berbagai Dialek SQL
Walaupun sintaks dasar tetap sama di berbagai dialek SQL, ada sedikit variasi tergantung platform. Jika Anda melihat kodenya, maka di sebagian besar platform seperti SQL Server, Oracle, MySQL, PostgreSQL, atau BigQuery, kodenya akan tampak serupa dengan yang ditunjukkan di bawah ini.
SELECT employee_id, employee_name
FROM sales_team
UNIONALLSELECT employee_id, employee_name
FROM support_team;Didukung oleh
Perintah dasar dalam dialek SQL ini tetap sama, dengan beberapa nuansa dan perbedaan:
Penanganan NULL dan Kolasi: Berbagai dialek SQL dapat memiliki aturan berbeda untuk menangani nilai NULL dan kolasi string.
Optimisasi Performa: Optimisasi performa dan efisiensi eksekusi bisa bervariasi.
Penanganan Error dan Peringatan: Dialek yang berbeda dapat menangani error dan peringatan secara berbeda saat menggunakan fungsi ini.
Fungsi dan Fitur Spesifik Platform: Beberapa dialek SQL mungkin menawarkan fungsi atau fitur tambahan yang dapat digunakan bersama UNION dan UNION ALL untuk skenario yang lebih kompleks.
Perintahnya berbeda cukup signifikan dalam kasus PySpark, yang beroperasi di lingkungan terdistribusi. Kodenya diberikan di bawah, dengan asumsi df1 dan df2 adalah nama dua data frame yang berisi dua tabel yang kita buat di atas. :
3 Aturan dan Kesalahan Umum Saat Menggunakan SQL UNION
Walaupun UNION dan UNION ALL kuat, keduanya ketat terkait sintaks. Jika kueri Anda menghasilkan error, kemungkinan melanggar salah satu dari tiga aturan emas ini.
1. Ketidakcocokan Jumlah Kolom
Kesalahan paling umum yang ditemui pengguna adalah ketidakcocokan jumlah kolom. Untuk menggabungkan dua dataset, "bentuk" tabel harus identik. Anda tidak bisa menumpuk tabel dengan 3 kolom di atas tabel dengan 2 kolom.
Kesalahannya:
-- Ini akan gagal karena jumlah kolom tidak cocokSELECT employee_id, name, department
FROM employees_2023
UNIONSELECT employee_id, name
FROM employees_2024;Didukung oleh
Perbaikannya: Pastikan kedua pernyataan SELECT meminta jumlah kolom yang persis sama. Jika tabel kedua kekurangan data (seperti department), Anda dapat memilih NULL sebagai placeholder agar jumlahnya cocok:
SELECT employee_id, name, department FROM employees_2023
UNIONSELECT employee_id, name,NULLas department FROM employees_2024;Didukung oleh
2. Kompatibilitas Tipe Data
SQL menggabungkan hasil berdasarkan posisi, bukan nama kolom. Tipe data kolom pertama pada kueri pertama Anda harus cocok (atau kompatibel) dengan tipe data kolom pertama pada kueri kedua Anda.
Kesalahannya: Jika Anda secara tidak sengaja menukar urutan kolom, SQL mencoba menumpuk Angka (ID) di atas String (Nama), yang menyebabkan error konversi tipe data.
-- Ini gagal karena Kolom 1 (ID - INT) tidak bisa digabung dengan Kolom 1 (Name - VARCHAR)SELECT employee_id, name FROM employees_2023
UNIONSELECT name, employee_id FROM employees_2024;Didukung oleh
Perbaikannya: Selalu pastikan bahwa kolom Anda dicantumkan dalam urutan yang persis sama di setiap pernyataan SELECT dalam UNION.
3. Batasan ORDER BY
Salah satu hal yang sering membingungkan adalah di mana menempatkan klausa ORDER BY. Anda tidak dapat mengurutkan sub-kueri individual di dalam operasi UNION; Anda hanya dapat mengurutkan hasil gabungan akhir.
Kesalahannya: Menggunakan ORDER BY sebelum kueri akhir akan memunculkan error sintaks.
-- SINTAKS YANG TIDAK BENARSELECT employee_id, name FROM employees_2023
ORDERBY employee_id -- Anda tidak bisa mengurutkan di sini!UNIONSELECT employee_id, name FROM employees_2024;Didukung oleh
Perbaikannya: Tempatkan klausa ORDER BY di bagian paling akhir kueri Anda. Ini menerapkan pengurutan pada keseluruhan himpunan hasil gabungan.
-- SINTAKS YANG BENARSELECT employee_id, name FROM employees_2023
UNIONSELECT employee_id, name FROM employees_2024
ORDERBY employee_id;-- Mengurutkan hasil akhirDidukung oleh
Penutup
Penting untuk memahami penerapan UNION dibanding UNION ALL dalam mengelola data secara efisien menggunakan SQL. Jika UNION hanya memilih catatan unik, UNION ALL memilih semuanya, sehingga memengaruhi performa dan ukuran himpunan hasil. Gunakan pengetahuan ini untuk memilih fungsi yang tepat sesuai kebutuhan spesifik Anda.
Untuk pembelajaran lebih lanjut, pertimbangkan untuk mengeksplorasi sumber berikut:
Pengantar SQL: Pelajari cara membuat dan mengkueri basis data relasional menggunakan SQL.
Dasar-dasar SQL: Kuasai keterampilan SQL fundamental yang Anda butuhkan untuk berinteraksi dan mengkueri data Anda.
Sertifikasi SQL Associate: Tunjukkan kemampuan SQL Anda dengan mengekstraksi data yang sesuai dari basis data, dan menggunakannya untuk menjawab pertanyaan data yang umum.
SQL Menengah: Dengan kursus praktik ini, Anda akan mempelajari semua yang perlu diketahui untuk menganalisis data menggunakan kode SQL Anda sendiri hari ini.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai kueri SQL yang kompleks yang diperlukan untuk menjawab berbagai pertanyaan ilmu data dan menyiapkan set data yang kuat untuk analisis di PostgreSQL.
Di dunia SQL, kemampuan untuk menggabungkan data dari beberapa kueri adalah kebutuhan mendasar, dan SQL menyediakan fungsi kuat seperti
UNIONdanUNION ALLuntuk mencapainya.Seperti yang akan Anda lihat, memahami perbedaan halus antara fungsi
UNIONdanUNION ALLdalam SQL sangat penting untuk kueri dan pengelolaan data yang efisien. Tutorial ini menjelaskan persamaan, perbedaan, dan skenario penggunaannya menggunakan dataset pendamping untuk membantu Anda mengoptimalkan kueri SQL.Jawaban Singkat: SQL UNION vs. UNION ALL
Perbedaan utamanya adalah
UNIONmenghapus catatan duplikat, sedangkanUNION ALLmenyertakan semua duplikasi. Perbedaan ini tidak hanya mengubah jumlah baris dalam hasil kueri, tetapi juga berdampak pada performa.Mari pertimbangkan dua tabel contoh,
employees_2023danemployees_2024, yang merepresentasikan catatan karyawan untuk dua tahun berbeda.employee_id
name
department
1
Alice
HR
2
Bob
IT
3
Charlie
Finance
employee_id
name
department
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
Sekarang, mari gabungkan kedua tabel menggunakan fungsi
UNION.employee_id
name
department
1
Alice
HR
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
Pada hasil ini, catatan duplikat dihapus. Sekarang, bandingkan dengan hasil setelah menggunakan
UNION ALL.employee_id
name
department
1
Alive
HR
2
Bob
IT
3
Charlie
Finance
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
Pada hasil ini, semua catatan disertakan, dan duplikat tidak dihapus.
Apa itu UNION dalam SQL?
Fungsi
UNIONmenggabungkan hasil dari dua atau lebih kueriSELECTke dalam satu himpunan hasil, sekaligus menghapus baris duplikat. Setiap pernyataanSELECTdalamUNIONharus memiliki jumlah kolom yang sama. Selain itu, tipe datanya harus serupa, dan urutan kolom juga harus sama. Untuk memahami fungsi ini, mari buat dua tabel contoh di bawah.Kode di atas akan membuat dua tabel yang akan kita gunakan dalam tutorial ini, masing-masing
sales_teamdansupport_team. Anda dapat melihat tabelnya menggunakan kode di bawah.Catatan dalam tabel sales_team. Gambar oleh Penulis
Catatan dalam tabel support_team. Gambar oleh Penulis
Ini adalah tabel kecil dengan masing-masing tiga catatan, dan nama kolomnya sudah jelas. Sekarang kedua tabel telah dibuat, mari terapkan fungsi
UNION.Keluaran dari fungsi UNION. Gambar oleh Penulis
Anda dapat melihat bahwa entri duplikat dari
employee_iddengan nilai3dihapus.Apa Saja Use Case untuk UNION dalam SQL?
Berikut beberapa use case umum untuk fungsi
UNION.Menggabungkan Hasil dari Tabel Berbeda: Saat Anda ingin menggabungkan data dari beberapa tabel dan memastikan tidak ada catatan duplikat,
UNIONadalah fungsi andalan.Menangani Sumber Data Berbeda:
UNIONberguna saat menggabungkan tabel dari berbagai sumber data.Menghapus Duplikasi di Antara Kueri: Saat Anda ingin memastikan keunikan himpunan hasil gabungan, gunakan
UNION.Apa itu UNION ALL dalam SQL?
Fungsi
UNION ALLmenggabungkan hasil dari dua atau lebih kueriSELECT, termasuk semua baris duplikat. Fungsi ini lebih cepat dibandingUNIONkarena tidak menghapus duplikasi.Keluaran dari fungsi UNION ALL. Gambar oleh Penulis
Anda dapat melihat bahwa, dalam kasus ini, entri duplikat diulang dan tidak dihapus.
Apa Saja Use Case untuk UNION ALL dalam SQL?
Berikut beberapa use case umum untuk fungsi
UNION ALL.UNION ALLsaat Anda perlu menggabungkan hasil dari beberapa kueri dan mempertahankan semua baris duplikat.UNION ALLlebih efisien waktu dibanding fungsiUNION, karena tidak memerlukan langkah tambahan untuk menghapus duplikasi.UNION ALLlebih disukai.UNION ALLcocok digunakan.UNION dan UNION ALL: Persamaan dan Perbedaan
Mari buat tabel ringkasan mengenai persamaan dan perbedaannya.
Fitur
UNION
UNION ALL
Baris duplikat
Dihapus
Disertakan
Performa
Lebih lambat
Lebih cepat
Use case
Saat Anda memerlukan catatan unik
Saat Anda memerlukan semua catatan
Ukuran hasil
Lebih kecil
Lebih besar
Perbedaan Sintaks UNION dan UNION ALL di Berbagai Dialek SQL
Walaupun sintaks dasar tetap sama di berbagai dialek SQL, ada sedikit variasi tergantung platform. Jika Anda melihat kodenya, maka di sebagian besar platform seperti SQL Server, Oracle, MySQL, PostgreSQL, atau BigQuery, kodenya akan tampak serupa dengan yang ditunjukkan di bawah ini.
Perintah dasar dalam dialek SQL ini tetap sama, dengan beberapa nuansa dan perbedaan:
NULLdan kolasi string.UNIONdanUNION ALLuntuk skenario yang lebih kompleks.Perintahnya berbeda cukup signifikan dalam kasus PySpark, yang beroperasi di lingkungan terdistribusi. Kodenya diberikan di bawah, dengan asumsi
df1dandf2adalah nama dua data frame yang berisi dua tabel yang kita buat di atas. :3 Aturan dan Kesalahan Umum Saat Menggunakan SQL UNION
Walaupun
UNIONdanUNION ALLkuat, keduanya ketat terkait sintaks. Jika kueri Anda menghasilkan error, kemungkinan melanggar salah satu dari tiga aturan emas ini.1. Ketidakcocokan Jumlah Kolom
Kesalahan paling umum yang ditemui pengguna adalah ketidakcocokan jumlah kolom. Untuk menggabungkan dua dataset, "bentuk" tabel harus identik. Anda tidak bisa menumpuk tabel dengan 3 kolom di atas tabel dengan 2 kolom.
Kesalahannya:
Perbaikannya: Pastikan kedua pernyataan
SELECTmeminta jumlah kolom yang persis sama. Jika tabel kedua kekurangan data (sepertidepartment), Anda dapat memilihNULLsebagai placeholder agar jumlahnya cocok:2. Kompatibilitas Tipe Data
SQL menggabungkan hasil berdasarkan posisi, bukan nama kolom. Tipe data kolom pertama pada kueri pertama Anda harus cocok (atau kompatibel) dengan tipe data kolom pertama pada kueri kedua Anda.
Kesalahannya: Jika Anda secara tidak sengaja menukar urutan kolom, SQL mencoba menumpuk Angka (ID) di atas String (Nama), yang menyebabkan error konversi tipe data.
Perbaikannya: Selalu pastikan bahwa kolom Anda dicantumkan dalam urutan yang persis sama di setiap pernyataan
SELECTdalamUNION.3. Batasan ORDER BY
Salah satu hal yang sering membingungkan adalah di mana menempatkan klausa
ORDER BY. Anda tidak dapat mengurutkan sub-kueri individual di dalam operasiUNION; Anda hanya dapat mengurutkan hasil gabungan akhir.Kesalahannya: Menggunakan
ORDER BYsebelum kueri akhir akan memunculkan error sintaks.Perbaikannya: Tempatkan klausa
ORDER BYdi bagian paling akhir kueri Anda. Ini menerapkan pengurutan pada keseluruhan himpunan hasil gabungan.Penutup
Penting untuk memahami penerapan
UNIONdibandingUNION ALLdalam mengelola data secara efisien menggunakan SQL. JikaUNIONhanya memilih catatan unik,UNION ALLmemilih semuanya, sehingga memengaruhi performa dan ukuran himpunan hasil. Gunakan pengetahuan ini untuk memilih fungsi yang tepat sesuai kebutuhan spesifik Anda.Untuk pembelajaran lebih lanjut, pertimbangkan untuk mengeksplorasi sumber berikut: