Menu
CoddyTech

Union

Termasuk bagian Dasar-Dasar dalam perjalanan SQL di Coddy. Pelajaran 48 dari 72.

UNION berbeda dari join. Join menggunakan kondisi untuk menggabungkan tabel, sedangkan UNION hanya menambahkan satu tabel di atas tabel lainnya. Untuk menggunakan UNION, kita akan menulis:

SELECT col1, col2, ... FROM table1
UNION
SELECT col1, col2, ... FROM table2

Kedua klausa SELECT harus mematuhi aturan berikut:

  • Jumlah field harus sama
  • Urutan itu penting
  • Kolom pada posisi yang sama harus memiliki tipe data yang cocok

Misalnya, anggap kita memiliki tabel-tabel berikut:

germany_people

idname
1Lena
2Leonie

england_people

idname
1George
2Lena

Masalah: Kita ingin membuat satu tabel besar berisi semua nama yang kita miliki.

SELECT name from germany_people
UNION
SELECT name from england_people

Hasil:

name
Lena
Leonie
George

UNION hanya mengembalikan nilai yang berbeda, sedangkan UNION ALL mengembalikan semua rekaman apa adanya:

SELECT name from germany_people
UNION ALL
SELECT name from england_people

Hasil:

name
Lena
Leonie
George
Lena

Kamu juga bisa menggabungkan UNION ALL dengan fungsi agregat, GROUP BY, dan ORDER BY untuk merangkum data dari beberapa tabel. Caranya adalah dengan membungkus UNION ALL di dalam subkueri, lalu menerapkan pengelompokan dan pengurutan di atasnya.

Sebagai contoh, misalkan kita ingin menghitung berapa kali setiap nama muncul di kedua tabel:

SELECT name, COUNT(*) AS total_count
FROM (
    SELECT name FROM germany_people
    UNION ALL
    SELECT name FROM england_people
) AS combined
GROUP BY name
ORDER BY total_count DESC

Hasil:

nametotal_count
Lena2
Leonie1
George1

Di sini, UNION ALL (bukan UNION) digunakan agar data duplikat seperti Lena tetap dipertahankan. Jika tidak, data tersebut akan dihapus sebelum dihitung. Subquery menggabungkan semua baris, lalu GROUP BY + COUNT merangkumnya. ORDER BY mengurutkan hasil akhir.

challenge icon

Tantangan

Mudah

Tabel dan kolom yang tersedia:

  • sales_2009: product_id, quantity_sold
  • sales_2010: product_id, quantity_sold
  • sales_2011: product_id, quantity_sold

Ada 3 tabel penjualan.

Temukan total penjualan untuk setiap produk dari semua tabel sekaligus.

Hasilnya harus mencakup product_id dan total penjualan.

Beri nama kolom ini total_sales.

Urutkan hasil berdasarkan total penjualan dari yang terbesar ke yang terkecil.

Coba sendiri

-- Gabungkan ketiga tabel menjadi satu hasil tanpa menghilangkan baris apa pun
SELECT product_id, ____ AS total_sales
FROM (
    SELECT * FROM sales_2009
    ____
    SELECT * FROM sales_2010
    ____
    SELECT * FROM sales_2011
)
-- Satu baris per produk, urutkan dari total terbesar
GROUP BY ____
ORDER BY ____ DESC;
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Playground SQL