top of page
Gambar penulisCornellius Yudha Wijaya

Panduan Step by Step Membaca dan Memahami Kueri SQL

SQL, atau Structured Query Language, adalah bahasa pemrograman untuk mengelola dan memanipulasi data dalam sistem manajemen database relasional (relational database management system/RDBMS). Ini adalah bahasa standar yang digunakan di banyak perusahaan untuk membantu bisnis mengakses data dengan lancar. Karena digunakan secara luas, biasanya kemampuan SQL dicantumkan sebagai salah satu keterampilan yang diperlukan dalam pekerjaan data science. Itulah mengapa penting untuk mempelajari SQL.


Salah satu masalah umum bagi orang-orang saat belajar SQL adalah memahami kueri, terutama ketika ditulis oleh orang lain. Kita akan bekerja sebagai tim di perusahaan dan seringkali perlu membaca dan memahami kueri SQL mereka. Jadi, kita perlu berlatih mendekonstruksi kueri SQL dan memahaminya.


Artikel ini akan menjelaskan proses step-by-step untuk membaca dan memahami kueri SQL. Bagaimana kita melakukannya? Mari kita mulai.

1. Memahami Struktur Umum Kueri SQL

Hal pertama yang perlu kita lakukan saat menghadapi kueri SQL adalah memahami maksud umum dari kueri SQL tersebut. Maksud umum tidak berarti kita sepenuhnya tahu tentang struktur kueri; ini lebih tentang alur keseluruhan.


Kita harus memahami kueri SQL standar untuk memahami kueri SQL secara umum. Kebanyakan kueri SQL dimulai dengan klausa SELECT dan diikuti dengan klausa FROM. Setelah itu, kueri biasanya diikuti oleh klausa JOIN, WHERE, GROUP BY, ORDER BY, dan HAVING.


Klausa di atas adalah standar dalam kueri SQL yang perlu kita pahami. Fungsi masing-masing klausa adalah:

  1. SELECT: Kolom apa yang akan diambil dari tabel

  2. FROM: Dari tabel mana data berasal

  3. JOIN: Menggabungkan tabel dengan pengidentifikasi tertentu

  4. WHERE: Filter data berdasarkan kondisi

  5. GROUP BY: Mengelompokkan data berdasarkan nilai kolom dan memungkinkan fungsi agregasi untuk dilakukan

  6. ORDER BY: Mengatur urutan hasil data berdasarkan kolom tertentu

  7. HAVING: Kondisi filter untuk fungsi agregasi yang tidak dapat ditentukan dengan WHERE


Ini adalah klausa standar dan apa saja yang harus Anda ketahui di awal saat memahami struktur umum kueri SQL. Mari gunakan kode contoh untuk belajar lebih lanjut.

SELECT 
  customers.name, 
  purchases.product, 
  SUM(price) as total_price 
FROM 
  purchases 
  JOIN customers ON purchases.cust_id = customers.id 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  customers.name, 
  purchases.product 
HAVING 
  total_price > 10000 
ORDER BY 
  total_price DESC;

Saat Anda melihat kueri di atas, coba identifikasi klausa standar. Klausa akan memberi Anda pemahaman tentang data apa yang dipilih (SELECT), dari mana asalnya (FROM dan JOIN), dan kondisinya (WHERE, GROUP BY, ORDER BY, dan HAVING).


Misalnya, membaca kueri di atas akan memberi Anda pemahaman berikut:

  1. Kita mencoba mengambil tiga jenis data yang berbeda: Nama (name) dari tabel customers, Produk (product) dari tabel purchases, dan agregasi kolom harga (price) yang tidak memiliki identifikasi dari tabel mana dengan alias total_price (Informasi dari klausa SELECT).

  2. Keseluruhan data berasal dari tabel purchases dan customers yang digabungkan menggunakan kolom cust_id dari purchases dan kolom id dari tabel customers (Informasi dari klausa FROM dan JOIN).

  3. Kita hanya akan memilih data dengan nilai kolom category di tabel purchases dengan nilai ‘kitchen’ (Informasi dari klausa WHERE).

  4. Mengelompokkan untuk fungsi agregasi dengan kolom name dan product yang berasal dari tabel masing-masing (Informasi dari klausa GROUP BY).

  5. Lakukan filter dari hasil fungsi agregasi sum di mana total_price lebih dari 10000 (informasi dari klausa HAVING).

  6. Mengatur urutan data secara menurun (descending) menurut total_price (informasi dari klausa ORDER BY).

Itulah struktur umum kueri SQL yang perlu Anda ketahui dan identifikasi. Dari sana, kita bisa menjelajahi lebih lanjut dari kueri yang lebih kompleks. Mari lanjut ke langkah berikutnya.


2. Memahami Final Select

Ada kalanya Anda akan menemukan kueri yang kompleks di mana ada banyak klausa SELECT dalam satu kueri. Dalam hal ini, kita harus memahami hasil akhir dari kueri atau SELECT terakhir (pertama) yang Anda lihat dalam kueri. Kuncinya adalah mengetahui apa yang ingin dicapai dari output kueri tersebut.


Mari gunakan kode yang lebih kompleks seperti di bawah ini.

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
) 
SELECT 
  c.name, 
  pd.product, 
  pd.total_product_price, 
  cs.total_spending 
FROM 
  (
    SELECT 
      purchases.cust_id, 
      purchases.product, 
      SUM(purchases.price) as total_product_price 
    FROM 
      purchases 
    WHERE 
      purchases.category = 'kitchen' 
    GROUP BY 
      purchases.cust_id, 
      purchases.product 
    HAVING 
      SUM(purchases.price) > 10000
  ) AS pd 
  JOIN customers c ON pd.cust_id = c.id 
  JOIN customerspending cs ON c.id = cs.id 
ORDER BY 
  pd.total_product_price DESC;

Sekarang kueri ini tampak lebih kompleks dan lebih panjang, tetapi fokus awal harus pada SELECT terakhir, yang tampaknya mencoba menghasilkan total pengeluaran pelanggan (total_product_price) dan riwayat pembelian (total_spending). Cobalah untuk menilai apa yang ingin dicapai dari hasil akhirnya dan uraikan dari sana.


3. Memahami Kondisi Klausa Akhir

Kita telah memiliki wawasan tentang hasil yang seharusnya diperoleh dari kueri. Bagian selanjutnya adalah melihat apa kondisi untuk SELECT terakhir. Klausa kondisi, termasuk WHERE, GROUP BY, ORDER BY, dan HAVING adalah yang mengontrol keseluruhan hasil data.


Cobalah baca dan pahami kondisi dari kueri, dan kita akan lebih memahami hasil akhir dari kueri. Misalnya, dalam kueri SQL sebelumnya, kondisi akhir hanya ORDER BY. Ini berarti hasil akhirnya akan diurutkan berdasarkan total harga produk secara descending.

Mengetahui kondisi akhir akan membantu Anda memahami sebagian besar kueri dan maksud keseluruhan kueri.


4. Memahami Join Akhir

Terakhir, kita perlu memahami dari mana data berasal. Setelah kita mengetahui data yang akan dipilih dan kondisi untuk mendapatkannya, kita perlu memahami sumbernya. Klausa JOIN akhir akan memberi kita pemahaman tentang bagaimana tabel berinteraksi dan alur datanya.


Misalnya, kueri kompleks sebelumnya menunjukkan bahwa kita melakukan JOIN dua kali. Ini berarti kita menggunakan setidaknya tiga sumber data untuk hasil akhir. Informasi ini akan penting di langkah-langkah selanjutnya untuk memahami lebih lanjut darimana setiap sumber data berasal, terutama ketika sumber data berasal dari subkueri.


5. Membaca dari Urutan Terbalik dan Mengulanginya

Setelah memahami bagaimana seharusnya hasil akhir dan dari mana asalnya, kita perlu melihat lebih dekat pada detailnya. Dari sini, kita akan mundur ke setiap subkueri dan memahami mengapa mereka terstruktur seperti itu.


Namun, kita tidak mencoba melihatnya dalam struktur top-down. Sebaliknya, kita harus mencoba melihat subkueri yang lebih dekat dengan hasil akhir, dan kita bergerak ke yang paling jauh dari hasil akhir. Dari contoh kode di atas, kita harus mencoba memahami kode ini terlebih dahulu:

SELECT 
  purchases.cust_id, 
  purchases.product, 
  SUM(purchases.price) as total_product_price 
FROM 
  purchases 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  purchases.cust_id, 
  purchases.product 
HAVING 
  SUM(purchases.price) > 10000

Kemudian, kita bergerak ke kode yang paling jauh yaitu ini:

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
)

Kita dapat melacak proses pemikiran penulis dengan jelas saat kita menguraikan setiap subkueri dari yang lebih dekat ke hasil hingga yang paling jauh.


Coba ulangi proses di atas jika Anda memerlukan bantuan untuk memahami setiap subkueri. Dengan sedikit latihan, Anda akan memiliki pengalaman yang lebih baik dalam membaca dan memahami kueri.


Kesimpulan

Membaca dan memahami kueri SQL adalah keterampilan yang harus dimiliki oleh semua orang di era modern ini, karena setiap perusahaan berurusan dengan kueri SQL. Dengan menggunakan panduan step-by-step berikut, Anda akan lebih mudah memahami kueri SQL yang kompleks. Langkah-langkahnya meliputi:

  1. Memahami Struktur Umum Kueri SQL

  2. Memahami Final Select

  3. Memahami Kondisi Klausa Akhir

  4. Memahami Join Akhir

  5. Membaca dari Urutan Terbalik dan Mengulanginya



12 tampilan0 komentar

Comments


bottom of page