java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query

Sunday, April 5, 2026

group by having mysql

📚 SERI BELAJAR QUERY SQL MYSQL — 15 dari 28

Mengelompokkan Data:
GROUP BY dan HAVING

🟡 Menengah 🗃️ SQL / Database ⏱️ 10 Menit Baca
2
Klausa SQL
10+
Contoh Query
10
Menit Baca

Coba bayangin kamu punya ratusan struk belanja dari toko yang berbeda-beda. Kalau disuruh tahu "bulan ini belanja paling banyak di mana?" — kamu pasti kelompokkan dulu per toko, baru total-in. Nah, itulah persis cara kerja GROUP BY HAVING MySQL. Dua klausa yang mengubah database kamu dari sekadar lemari arsip jadi mesin laporan otomatis. 📊

Di artikel ke-15 dari seri 28 artikel Belajar Query SQL MySQL ini, kita akan kupas tuntas cara kerja GROUP BY dan HAVING — dua klausa yang jadi pasangan tak terpisahkan di dunia query SQL. Kalau di [LINK ARTIKEL SEBELUMNYA] artikel ke-14 kita belajar fungsi agregasi, sekarang kita bawa fungsi itu ke level berikutnya dengan pengelompokan data yang powerful.

Kamu akan paham: kapan pakai GROUP BY, kenapa HAVING beda dari WHERE, dan bagaimana kombinasi keduanya menghasilkan laporan bisnis yang sesungguhnya. Semua lewat studi kasus toko online yang nyata!

💡

FAKTA MENARIK

Hampir setiap dashboard laporan bisnis — dari e-commerce, perbankan, hingga startup teknologi — menggunakan kombinasi GROUP BY dan fungsi agregasi di balik layarnya. Artinya, menguasai klausa ini sama artinya kamu siap kerja di posisi data analyst atau backend developer mana pun!

Sintaks Lengkap & Urutan Eksekusi Query

Sebelum mulai, penting banget kamu pahami urutan eksekusi SQL — karena ini menentukan kenapa HAVING beda dari WHERE. SQL tidak dieksekusi dari atas ke bawah seperti kamu baca; ada urutannya sendiri yang wajib kamu tahu!

sintaks-group-by-having.sql
SELECT   kolom_group, FUNGSI_AGREGASI(kolom)   -- ④ Pilih kolom & hitung
FROM     nama_tabel                         -- ① Ambil dari tabel
WHERE    kondisi_baris                      -- ② Filter baris SEBELUM dikelompokkan
GROUP BY kolom_group                        -- ③ Kelompokkan data
HAVING   kondisi_agregasi                   -- ⑤ Filter kelompok SETELAH diagregasi
ORDER BY kolom DESC;                       -- ⑥ Urutkan hasil akhir

🔄 Urutan Eksekusi SQL (bukan urutan penulisan!)

① FROM ② WHERE ③ GROUP BY ④ SELECT ⑤ HAVING ⑥ ORDER BY

GROUP BY: Mengelompokkan Data Seperti Sortir Surat

Bayangin kamu tukang pos yang punya tumpukan surat — kamu sortir per kelurahan dulu sebelum dikirim. GROUP BY bekerja persis begitu: ia mengambil baris-baris data dan menggabungkan baris yang punya nilai sama di kolom tertentu menjadi satu kelompok, supaya fungsi agregasi bisa dihitung per kelompok.

Kita pakai data tabel pesanan dari toko online kita. Ini datanya:

id_pesanan id_pelanggan kategori total_harga status
1C001Elektronik12.500.000selesai
2C002Aksesori935.000selesai
3C001Elektronik4.200.000proses
4C003Aksesori185.000selesai
5C002Elektronik750.000batal
6C003Aksesori320.000selesai

Contoh 1: Total Penjualan per Kategori

group-by-kategori.sql
SELECT
    kategori,
    COUNT(*) AS jumlah_pesanan,
    SUM(total_harga) AS total_penjualan
FROM pesanan
GROUP BY kategori
ORDER BY total_penjualan DESC;

📊 Output:

kategorijumlah_pesanantotal_penjualan
Elektronik317.450.000
Aksesori31.440.000

Contoh 2: Ringkasan Belanja per Pelanggan

group-by-pelanggan.sql
SELECT
    id_pelanggan,
    COUNT(*) AS total_pesanan,
    SUM(total_harga) AS total_belanja,
    AVG(total_harga) AS rata_rata_belanja
FROM pesanan
GROUP BY id_pelanggan
ORDER BY total_belanja DESC;

📊 Output:

id_pelanggantotal_pesanantotal_belanjarata_rata_belanja
C001216.700.0008.350.000,00
C00221.685.000842.500,00
C0032505.000252.500,00
🛠️

TIP PRAKTIS

Kolom yang ada di SELECT tapi bukan hasil fungsi agregasi, wajib ada di GROUP BY. Contoh: kalau kamu SELECT kategori, COUNT(*), maka kategori harus masuk ke GROUP BY. Melanggar aturan ini adalah error paling umum pemula!

HAVING: Filter Setelah Pengelompokan dalam GROUP BY HAVING MySQL

Kalau WHERE itu penjaga pintu masuk — menyaring siapa boleh masuk — maka HAVING itu penjaga pintu keluar: menyaring kelompok mana yang boleh tampil di hasil akhir. HAVING hanya bisa bekerja setelah GROUP BY karena ia memfilter berdasarkan hasil agregasi, bukan baris individual.

Perbedaan paling krusial: kamu tidak bisa menulis WHERE SUM(total_harga) > 1000000 karena WHERE belum tahu nilai SUM saat ia dieksekusi. Kamu harus pakai HAVING SUM(total_harga) > 1000000.

Contoh 3: Pelanggan dengan Total Belanja di Atas 1 Juta

having-total-belanja.sql
SELECT
    id_pelanggan,
    COUNT(*) AS total_pesanan,
    SUM(total_harga) AS total_belanja
FROM pesanan
GROUP BY id_pelanggan
HAVING SUM(total_harga) > 1000000
ORDER BY total_belanja DESC;

📊 Output:

id_pelanggantotal_pesanantotal_belanja
C001 ✅216.700.000
C002 ✅21.685.000

C003 tidak muncul karena total belanjanya (505.000) tidak memenuhi kondisi HAVING.

⚠️

PERINGATAN — Jangan Tukar WHERE dan HAVING!

Menulis WHERE SUM(total_harga) > 1000000 akan menghasilkan error karena WHERE tidak bisa memfilter hasil fungsi agregasi. Selalu gunakan HAVING untuk filter berbasis hasil agregasi, dan WHERE untuk filter berbasis nilai kolom biasa.

Kombinasi WHERE + GROUP BY + HAVING: Trio Paling Powerful

Di sinilah kekuatan GROUP BY HAVING MySQL benar-benar terasa — ketika kamu kombinasikan ketiganya. WHERE menyaring data mentah dulu, GROUP BY mengelompokkannya, lalu HAVING memfilter hasilnya. Ini adalah pola yang paling sering muncul di laporan bisnis nyata.

Contoh 4: Laporan Penjualan Selesai per Kategori (Hanya yang > 500rb)

where-groupby-having.sql
-- WHERE: filter hanya pesanan 'selesai'
-- GROUP BY: kelompokkan per kategori
-- HAVING: tampilkan hanya yg total > 500.000
SELECT
    kategori,
    COUNT(*) AS jumlah_transaksi,
    SUM(total_harga) AS total_penjualan
FROM pesanan
WHERE status = 'selesai'
GROUP BY kategori
HAVING SUM(total_harga) > 500000
ORDER BY total_penjualan DESC;

📊 Output:

kategorijumlah_transaksitotal_penjualan
Elektronik112.500.000
Aksesori31.440.000
🛠️

TIP PRAKTIS

Kamu bisa menggunakan alias dari SELECT di dalam HAVING di beberapa versi MySQL. Contoh: HAVING total_penjualan > 500000 setelah mendefinisikan SUM(...) AS total_penjualan. Ini membuat query lebih bersih dan mudah dibaca!

🚀 Panduan Praktikum Step-by-Step

Ikuti langkah-langkah ini untuk langsung praktik di MySQL-mu sendiri dari nol:

1

Siapkan Tabel dan Data

Buat tabel pesanan dan isi dengan data sampel di atas. Gunakan tabel dari artikel sebelumnya jika sudah ada.

CREATE TABLE pesanan (
  id_pesanan  INT PRIMARY KEY AUTO_INCREMENT,
  id_pelanggan VARCHAR(10),
  kategori    VARCHAR(50),
  total_harga DECIMAL(15,2),
  status      VARCHAR(20)
);
2

Insert Data Sampel

Masukkan 6 baris data pesanan persis seperti tabel di atas untuk hasil yang konsisten.

INSERT INTO pesanan (id_pelanggan, kategori, total_harga, status) VALUES
('C001', 'Elektronik', 12500000, 'selesai'),
('C002', 'Aksesori', 935000, 'selesai'),
('C001', 'Elektronik', 4200000, 'proses'),
('C003', 'Aksesori', 185000, 'selesai'),
('C002', 'Elektronik', 750000, 'batal'),
('C003', 'Aksesori', 320000, 'selesai');
3

Coba GROUP BY Dasar

Mulai dengan query sederhana untuk menghitung jumlah pesanan per status. Amati output-nya.

SELECT status, COUNT(*) AS jumlah
FROM pesanan
GROUP BY status;
4

Tambahkan HAVING untuk Filter

Sekarang tambahkan HAVING untuk hanya menampilkan status yang jumlah pesanannya lebih dari 1. Bandingkan hasilnya dengan dan tanpa HAVING.

SELECT status, COUNT(*) AS jumlah
FROM pesanan
GROUP BY status
HAVING COUNT(*) > 1;

📋 WHERE vs HAVING: Tabel Perbandingan Lengkap

Aspek WHERE HAVING
Waktu eksekusiSebelum GROUP BY (awal)Setelah GROUP BY (akhir)
MemfilterBaris individualKelompok (hasil GROUP BY)
Bisa pakai fungsi agregasi?❌ Tidak✅ Ya
Butuh GROUP BY?❌ Tidak✅ Ya (biasanya)
Contoh kondisiWHERE status = 'selesai'HAVING SUM(harga) > 1000000
Performa⚡ Lebih cepat🐢 Lebih lambat (jalankan setelah agregasi)

💡 Tips & Insight dari Lapangan

💡 TIP #1 — Filter Awal Pakai WHERE untuk Performa Lebih Baik

Kalau bisa filter dengan WHERE, lakukan itu dulu sebelum GROUP BY. Karena WHERE menyaring baris lebih awal, GROUP BY punya lebih sedikit data untuk diproses. Ini bisa drastis mempercepat query di tabel yang punya jutaan baris. Kombinasikan keduanya: WHERE status='selesai' GROUP BY kategori HAVING SUM(...)>x.

💡 TIP #2 — GROUP BY Bisa Pakai Beberapa Kolom Sekaligus

Kamu bisa kelompokkan berdasarkan lebih dari satu kolom. Contoh: GROUP BY id_pelanggan, kategori akan menghasilkan kelompok per kombinasi pelanggan + kategori — cocok untuk laporan detail!

SELECT id_pelanggan, kategori, SUM(total_harga) AS total
FROM pesanan
GROUP BY id_pelanggan, kategori;

🔥 INSIGHT TRAINER

Di dunia kerja nyata, pola WHERE + GROUP BY + HAVING adalah backbone dari hampir semua query laporan. Kalau kamu sudah bisa menggabungkan ketiganya dengan lancar, kamu sudah level "Data Analyst Junior" yang siap pakai. Langkah berikutnya? Belajar JOIN untuk menggabungkan beberapa tabel!

✅ Kesimpulan

Selamat! Kamu baru saja naik level dalam penguasaan GROUP BY HAVING MySQL! Ini poin-poin kunci yang perlu kamu simpan:

  • GROUP BY mengelompokkan baris-baris dengan nilai kolom yang sama menjadi satu kelompok
  • HAVING memfilter kelompok berdasarkan hasil fungsi agregasi — tidak bisa digantikan WHERE
  • WHERE dieksekusi sebelum GROUP BY, HAVING sesudahnya — urutan ini tidak bisa ditukar
  • Kolom non-agregasi di SELECT wajib ada di GROUP BY
  • GROUP BY bisa pakai banyak kolom untuk granularitas laporan yang lebih detail

Ingat, seorang developer yang bisa menghasilkan laporan analitik dengan query yang bersih dan efisien adalah aset berharga di mana pun ia bekerja. Dan kamu sudah satu langkah lebih dekat ke sana! 🚀

💬 Ada query GROUP BY yang bikin kamu bingung? Tanya di kolom komentar, kita bahas bareng! Share artikel ini ke teman-teman yang sedang belajar SQL — biar makin banyak yang naik level. Dan jangan lupa bookmark halaman ini sebagai referensi! 🔖

📖

Artikel Selanjutnya — 16 dari 28

JOINS di MySQL: Menggabungkan Data dari Beberapa Tabel

Pelajari INNER JOIN, LEFT JOIN, RIGHT JOIN, dan FULL JOIN untuk menggabungkan tabel-tabel yang saling berkaitan — kunci dari query database yang sesungguhnya!

[LINK ARTIKEL BERIKUTNYA] Baca →

mysql aggregate

📚 SERI BELAJAR QUERY SQL MYSQL — 14 dari 28

Fungsi Agregasi MySQL:
COUNT, SUM, AVG, MIN & MAX

🟡 Menengah 🗃️ SQL / Database ⏱️ 10 Menit Baca
5
Fungsi SQL
12+
Contoh Query
10
Menit Baca

Bayangin kamu lagi jadi manajer toko online. Bos kamu tiba-tiba masuk dan nanya: "Berapa total penjualan bulan ini? Produk mana yang paling mahal? Rata-rata harga produk kita berapa?" Nah, kalau database kamu cuma bisa menyimpan data tapi nggak bisa mengolahnya — kamu bakal pusing tujuh keliling, harus hitung manual satu per satu. Di sinilah fungsi agregasi MySQL jadi penyelamat hidupmu. 🎉

Di artikel ke-14 dari seri 28 artikel Belajar Query SQL MySQL ini, kita akan bedah tuntas 5 fungsi agregasi paling penting: COUNT, SUM, AVG, MIN, dan MAX. Semua pakai studi kasus nyata dari database toko online — biar langsung kena feel-nya, bukan cuma teori di atas kertas.

Kamu akan belajar: apa itu fungsi agregasi, kapan dan gimana pakainya, plus tips praktis dari lapangan yang bikin query kamu makin tajam. Kalau kamu udah baca [LINK ARTIKEL SEBELUMNYA] artikel ke-13 tentang WHERE dan HAVING, topik ini bakal makin nyambung. Yuk mulai!

💡

FAKTA MENARIK

Menurut survei Stack Overflow Developer Survey, SQL masih jadi salah satu bahasa yang paling banyak digunakan oleh developer di seluruh dunia — dan fungsi agregasi adalah salah satu fitur yang paling sering dipakai dalam query sehari-hari, terutama untuk laporan bisnis dan analisis data.

Apa Itu Fungsi Agregasi MySQL?

Kalau query biasa itu ibarat kamu membaca satu buku satu per satu, fungsi agregasi MySQL itu ibarat kamu punya asisten yang langsung merangkum seluruh isi perpustakaan dalam hitungan detik. Fungsi agregasi adalah fungsi SQL yang bekerja pada sekelompok baris dan mengembalikan satu nilai tunggal sebagai hasil.

Misalnya, dari 1000 baris data pesanan, kamu mau tahu totalnya? Tinggal pakai SUM(). Mau tahu ada berapa pesanan? Pakai COUNT(). Simpel, cepat, dan powerful!

sintaks-dasar.sql
SELECT
    COUNT(kolom),     -- menghitung jumlah baris
    SUM(kolom),       -- menjumlahkan nilai
    AVG(kolom),       -- rata-rata nilai
    MIN(kolom),       -- nilai terkecil
    MAX(kolom)        -- nilai terbesar
FROM nama_tabel
WHERE kondisi;      -- opsional, filter data dulu

Sekarang kita akan eksplorasi masing-masing fungsi dengan data nyata dari toko online kita. Sebelumnya, ini tabel yang akan kita gunakan:

📦 Tabel: produk

id_produk nama_produk kategori harga stok
1Laptop Pro XElektronik12.500.00015
2Mouse WirelessAksesori185.000120
3Keyboard MekanikalAksesori750.00045
4Monitor 4KElektronik4.200.00020
5Webcam HDAksesori320.00060

COUNT() dan SUM(): Menghitung dan Menjumlahkan Data

COUNT() ibarat kamu menghitung jumlah telur dalam keranjang tanpa peduli isinya. Sedangkan SUM() seperti kamu menghitung total uang di dompet — setiap lembar dijumlahkan. Keduanya adalah fondasi dari fungsi agregasi MySQL yang paling sering kamu butuhkan.

Contoh 1: Menghitung Jumlah Produk

count-produk.sql
SELECT
    COUNT(*) AS total_produk,
    COUNT(id_produk) AS produk_dengan_id
FROM produk;

📊 Output:

total_produkproduk_dengan_id
55

Contoh 2: Total Stok dan Total Nilai Inventori

sum-stok.sql
SELECT
    SUM(stok) AS total_stok,
    SUM(harga * stok) AS total_nilai_inventori
FROM produk;

📊 Output:

total_stoktotal_nilai_inventori
260278.925.000
🛠️

TIP PRAKTIS

COUNT(*) menghitung semua baris termasuk yang nilai NULL. Sedangkan COUNT(kolom) hanya menghitung baris yang tidak NULL di kolom tersebut. Pilih dengan bijak sesuai kebutuhanmu!

AVG(), MIN(), MAX(): Rata-rata, Nilai Terkecil & Terbesar

Trio ini adalah alat analitik favoritmu. AVG() kayak kamu hitung rata-rata nilai ujian. MIN() dan MAX() langsung tunjukkan si paling murah dan si paling mahal — persis kayak kamu nyari harga terbaik di marketplace. Ketiganya termasuk inti dari fungsi agregasi MySQL yang wajib kamu kuasai.

Contoh 3: Analisis Harga Produk

avg-min-max.sql
SELECT
    AVG(harga) AS rata_rata_harga,
    MIN(harga) AS harga_termurah,
    MAX(harga) AS harga_termahal
FROM produk;

📊 Output:

rata_rata_hargaharga_termurahharga_termahal
3.591.000,00185.00012.500.000

Contoh 4: Analisis Per Kategori (dengan GROUP BY)

Fungsi agregasi semakin powerful ketika dikombinasikan dengan GROUP BY. Ini memungkinkan kamu mendapat ringkasan per kelompok data:

group-by-kategori.sql
SELECT
    kategori,
    COUNT(*) AS jumlah_produk,
    AVG(harga) AS rata_rata_harga,
    MIN(harga) AS harga_min,
    MAX(harga) AS harga_max
FROM produk
GROUP BY kategori
ORDER BY rata_rata_harga DESC;

📊 Output:

kategorijumlah_produkrata_rata_hargaharga_minharga_max
Elektronik28.350.000,004.200.00012.500.000
Aksesori3418.333,33185.000750.000
⚠️

PERINGATAN

AVG() dan SUM() mengabaikan nilai NULL secara otomatis. Ini bisa mengakibatkan hasil yang tidak akurat jika banyak data kosong. Selalu cek dulu dengan COUNT(*) vs COUNT(kolom) untuk deteksi NULL!

Fungsi Agregasi MySQL dalam Studi Kasus Pesanan Nyata

Teori saja nggak cukup. Sekarang kita masuk ke skenario yang lebih realistis — laporan penjualan dari tabel pesanan. Ini yang sering kamu temui di dunia kerja nyata: bos minta laporan, kamu tinggal jalankan query, beres!

🛒 Tabel: pesanan

id_pesanan id_pelanggan total_harga status tgl_pesan
1C00112.500.000selesai2024-01-10
2C002935.000selesai2024-01-12
3C0014.200.000proses2024-01-15
4C003185.000selesai2024-01-18
5C002750.000batal2024-01-20

Contoh 5: Laporan Penjualan Komprehensif

laporan-penjualan.sql
-- Laporan ringkasan hanya untuk pesanan 'selesai'
SELECT
    COUNT(*) AS total_transaksi,
    SUM(total_harga) AS total_pendapatan,
    AVG(total_harga) AS rata_rata_transaksi,
    MIN(total_harga) AS transaksi_terkecil,
    MAX(total_harga) AS transaksi_terbesar
FROM pesanan
WHERE status = 'selesai';

📊 Output:

total_transaksitotal_pendapatanrata_rata_transaksitransaksi_terkeciltransaksi_terbesar
313.620.0004.540.000,00185.00012.500.000

🚀 Panduan Praktikum Step-by-Step

Ikuti langkah-langkah ini biar kamu bisa langsung cobain di MySQL-mu sendiri:

1

Buat Database dan Tabel

Pertama, buat database toko online dan tabel produk seperti yang kita gunakan di atas.

CREATE DATABASE toko_online;
USE toko_online;

CREATE TABLE produk (
  id_produk INT PRIMARY KEY AUTO_INCREMENT,
  nama_produk VARCHAR(100),
  kategori VARCHAR(50),
  harga DECIMAL(15,2),
  stok INT
);
2

Isi Data Sampel

Masukkan data produk yang sama persis seperti tabel di atas.

INSERT INTO produk (nama_produk, kategori, harga, stok) VALUES
('Laptop Pro X', 'Elektronik', 12500000, 15),
('Mouse Wireless', 'Aksesori', 185000, 120),
('Keyboard Mekanikal', 'Aksesori', 750000, 45),
('Monitor 4K', 'Elektronik', 4200000, 20),
('Webcam HD', 'Aksesori', 320000, 60);
3

Coba Semua Fungsi Sekaligus

Jalankan satu query mega-ringkasan yang menggabungkan semua 5 fungsi agregasi sekaligus!

SELECT
    COUNT(*) AS total_produk,
    SUM(stok) AS total_stok,
    AVG(harga) AS rata_harga,
    MIN(harga) AS harga_min,
    MAX(harga) AS harga_max
FROM produk;
4

Eksplorasi dengan GROUP BY

Setelah basic berhasil, coba kombinasikan dengan GROUP BY untuk analisis per kelompok. Ini adalah level berikutnya yang langsung terasa manfaatnya di dunia nyata!

📋 Tabel Perbandingan Fungsi Agregasi MySQL

Fungsi Kegunaan Tipe Data Perlakuan NULL Contoh Use Case
COUNT() Menghitung jumlah baris Semua tipe COUNT(*) hitung semua; COUNT(col) skip NULL Jumlah produk, pelanggan, pesanan
SUM() Menjumlahkan nilai Numerik saja Mengabaikan NULL Total penjualan, total stok
AVG() Rata-rata nilai Numerik saja Mengabaikan NULL Rata-rata harga, rata-rata transaksi
MIN() Nilai terkecil Numerik & teks Mengabaikan NULL Harga termurah, tanggal paling awal
MAX() Nilai terbesar Numerik & teks Mengabaikan NULL Harga termahal, tanggal terbaru

💡 Tips & Insight dari Lapangan

💡 TIP #1 — Gunakan ROUND() untuk AVG

Hasil AVG() sering menghasilkan angka desimal panjang seperti 4.540.000,000000. Bungkus dengan ROUND(AVG(harga), 0) supaya tampilannya lebih rapi dan mudah dibaca oleh user non-teknis.

💡 TIP #2 — COUNT(DISTINCT) untuk Data Unik

Mau tahu berapa pelanggan unik yang pernah memesan? Jangan pakai COUNT(*) karena satu pelanggan bisa punya banyak pesanan. Gunakan COUNT(DISTINCT id_pelanggan) untuk hasil yang akurat!

🔥 INSIGHT TRAINER

Dalam project nyata, fungsi agregasi hampir selalu dikombinasikan dengan GROUP BY, HAVING, dan JOIN. Kuasai ketiganya setelah kamu mantap di fungsi agregasi, dan kamu udah punya pondasi yang sangat kuat untuk analisis data apapun!

✅ Kesimpulan

Kamu baru saja menguasai senjata rahasia para data analyst — fungsi agregasi MySQL! Ini rangkuman cepat yang perlu kamu ingat:

  • COUNT() untuk menghitung jumlah baris — pakai DISTINCT kalau butuh nilai unik
  • SUM() untuk total nilai numerik — bisa dikombinasi dengan ekspresi seperti harga * stok
  • AVG() untuk rata-rata — selalu pasangkan dengan ROUND() biar rapi
  • MIN() & MAX() bisa bekerja pada angka maupun teks/tanggal
  • Semua fungsi ini mengabaikan NULL kecuali COUNT(*)

Ingat, database yang hebat bukan yang cuma menyimpan data, tapi yang bisa bercerita tentang data itu. Dan fungsi agregasi adalah cara database bercerita kepada kita. Sekarang giliranmu untuk berlatih!

💬 Punya pertanyaan atau menemukan query yang menarik? Tulis di kolom komentar! Share artikel ini ke teman-temanmu yang lagi belajar SQL — bantuin mereka skip ngitung manual! Dan jangan lupa bookmark halaman ini supaya gampang balik lagi. 🔖

📖

Artikel Selanjutnya — 15 dari 28

GROUP BY dan HAVING: Mengelompokkan Data Secara Dinamis

Pelajari cara mengelompokkan data dengan GROUP BY dan memfilter hasil agregasi menggunakan HAVING — pasangan sempurna dari fungsi agregasi yang baru kamu pelajari!

[LINK ARTIKEL BERIKUTNYA] Baca →

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux