mysql aggregate | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: mysql aggregate

Sunday, April 5, 2026

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 →

No comments:

Post a Comment

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