Skip to content

deuscoco/SQL-part-5

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

📘 Basis Data Part 5 – GROUP BY & CASE WHEN


📌 Pendahuluan

Pada Basis Data Part 5, materi berfokus pada penggunaan klausa GROUP BY untuk melakukan pengelompokan data serta penggunaan CASE WHEN untuk membuat logika kondisi di dalam query SQL. Materi ini sangat penting dalam pembuatan laporan dan analisis data, khususnya untuk menghitung total, rata-rata, dan klasifikasi data.

Dokumentasi ini disusun dalam format Markdown agar dapat langsung digunakan sebagai README di GitHub, serta telah dilengkapi dengan jawaban seluruh quiz sesuai modul.


1️⃣ Pengenalan GROUP BY

GROUP BY digunakan untuk mengelompokkan baris data yang memiliki nilai sama pada satu atau lebih kolom.

Contoh GROUP BY

SELECT status
FROM orders
GROUP BY status;

Query di atas akan menampilkan daftar status tanpa duplikasi.


2️⃣ GROUP BY dengan Aggregate Function

GROUP BY sering digunakan bersama fungsi aggregate seperti SUM(), COUNT(), dan AVG().

Contoh

SELECT status, COUNT(*) AS total_order
FROM orders
GROUP BY status;
SELECT orderNumber,
       SUM(quantityOrdered * priceEach) AS total
FROM orderdetails
GROUP BY orderNumber;

3️⃣ CASE WHEN

CASE WHEN digunakan untuk membuat kondisi logika di dalam query SQL.

Contoh Sintaks

SELECT ColumnName1,
       ColumnName2,
       CASE
         WHEN condition1 THEN result1
         WHEN condition2 THEN result2
         ELSE result
       END AS alias
FROM TableName;

📝 Quiz 1

Soal

Dengan menggunakan data pada tabel orderdetails, buat query yang:

  • Menggunakan fungsi aggregate SUM(quantityOrdered * priceEach)
  • Menambahkan kolom remark menggunakan CASE WHEN

Ketentuan remark:

  • >= 50000Target Achieved
  • <= 20000Less Performed
  • Selain itu → Follow Up

✅ Jawaban Quiz 1

SELECT
    orderNumber,
    SUM(quantityOrdered * priceEach) AS total,
    CASE
        WHEN SUM(quantityOrdered * priceEach) >= 50000 THEN 'Target Achieved'
        WHEN SUM(quantityOrdered * priceEach) <= 20000 THEN 'Less Performed'
        ELSE 'Follow Up'
    END AS remark
FROM orderdetails
GROUP BY orderNumber;

📝 Quiz 2

Soal

Buat laporan dari tabel ms_transaksi dengan ketentuan:

  1. Total seluruh penjualan (revenue)

  2. Total quantity seluruh produk yang terjual

  3. Total quantity dan total revenue untuk setiap kode produk

  4. Rata-rata total belanja per kode pelanggan

  5. Tambahkan kolom kategori:

    • High: > 300.000
    • Medium: 100.000 – 300.000
    • Low: < 100.000

✅ Jawaban Quiz 2

1️⃣ Total Revenue & Total Quantity

SELECT
    SUM(total) AS total_revenue,
    SUM(qty) AS total_quantity
FROM ms_transaksi;

2️⃣ Total Quantity & Revenue per Kode Produk

SELECT
    kode_produk,
    SUM(qty) AS total_qty,
    SUM(total) AS total_revenue
FROM ms_transaksi
GROUP BY kode_produk;

3️⃣ Rata-Rata Total Belanja per Kode Pelanggan

SELECT
    kode_pelanggan,
    AVG(total) AS rata_rata_belanja
FROM ms_transaksi
GROUP BY kode_pelanggan;

4️⃣ Kategori Revenue

SELECT
    kode_pelanggan,
    SUM(total) AS total_revenue,
    CASE
        WHEN SUM(total) > 300000 THEN 'High'
        WHEN SUM(total) BETWEEN 100000 AND 300000 THEN 'Medium'
        ELSE 'Low'
    END AS kategori
FROM ms_transaksi
GROUP BY kode_pelanggan;

✅ Penutup

Dengan memahami penggunaan GROUP BY dan CASE WHEN, kita dapat membuat laporan data yang terstruktur dan informatif langsung dari database. Materi ini menjadi dasar penting sebelum mempelajari analisis data lanjutan seperti HAVING, JOIN, dan subquery.


🔗 Referensi

About

Materi dan penjelasan SQL basis data

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors