SQLite - Klause GROUP BY: Membuka Kekuatan Agregasi Data

Hai, para ahli data yang sedang berkembang! Hari ini, kita akan melakukan perjalanan yang menarik ke dunia SQLite dan mengexplore salah satu fitur yang paling kuat: klause GROUP BY. Sebagai guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya disini untuk membimbing Anda melalui petualangan ini langkah demi langkah. Jadi, ambil keyboard Anda (tongkat sihir virtual), dan mari kita masuk ke dalam!

SQLite - GROUP By Clause

Apa Itu Klause GROUP BY?

Sebelum kita masuk ke dalam hal yang teknis, mari kita mengerti apa itu klause GROUP BY. Bayangkan Anda menata puing-puing Lego berwarna-warna yang besar. Anda memutuskan untuk mengelompokkan mereka berdasarkan warna untuk membuat kehidupan Anda lebih mudah. Itu sebenarnya apa yang dilakukan GROUP BY di SQLite - itu mengatur data Anda ke dalam kelompok berdasarkan satu atau lebih kolom.

Klause GROUP BY sering digunakan bersamaan dengan fungsi agregat seperti COUNT(), MAX(), MIN(), SUM(), dan AVG() untuk melakukan perhitungan pada setiap kelompok baris. Itu seperti memiliki asisten yang membantu yang tidak hanya mengelompokkan puing-puing Lego Anda berdasarkan warna, tetapi juga menghitung berapa banyak Anda punya dari masing-masingnya!

Sintaks: Kata-kata Magic

Sekarang, mari kita lihat sintaks dari mantra GROUP BY kami:

SELECT column1, column2, ..., aggregate_function(column_name)
FROM table_name
WHERE condition
GROUP BY column1, column2, ...
HAVING condition;

Jangan khawatir jika ini terlihat sedikit menakutkan pada awalnya. Kita akan membongkar itu secara berurutan dengan beberapa contoh.

Contoh: Melihat GROUP BY Dalam Aksi

Contoh 1: Menghitung Murid per Departemen

Mari kita mulai dengan contoh sederhana. Bayangkan kita memiliki tabel 'students' dengan kolom 'id', 'name', 'department', dan 'grade'.

CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT,
department TEXT,
grade INTEGER
);

INSERT INTO students (name, department, grade) VALUES
('Alice', 'Computer Science', 85),
('Bob', 'Mathematics', 92),
('Charlie', 'Computer Science', 78),
('David', 'Physics', 95),
('Eve', 'Mathematics', 88);

SELECT department, COUNT(*) as student_count
FROM students
GROUP BY department;

Query ini akan memberikan kita jumlah murid di setiap departemen. Berikut apa yang terjadi:

  1. Kita memilih kolom 'department' dan menggunakan fungsi COUNT(*) untuk menghitung baris.
  2. Kita mengelompokkan hasilnya berdasarkan kolom 'department'.

Hasilnya akan tampak seperti ini:

department student_count
Computer Science 2
Mathematics 2
Physics 1

Contoh 2: Rata-rata Nilai per Departemen

Sekarang, mari kita menghitung rata-rata nilai untuk setiap departemen:

SELECT department, AVG(grade) as average_grade
FROM students
GROUP BY department;

Query ini mengelompokkan murid per departemen dan menghitung rata-rata nilai untuk masing-masingnya. Berikut penguraian nya:

  1. Kita memilih kolom 'department'.
  2. Kita menggunakan fungsi AVG() pada kolom 'grade' untuk menghitung rata-rata.
  3. Kita mengelompokkan hasilnya berdasarkan 'department'.

Hasilnya mungkin tampak seperti ini:

department average_grade
Computer Science 81.5
Mathematics 90.0
Physics 95.0

Contoh 3: Menggabungkan GROUP BY dengan WHERE

Ayo katakan kita ingin menemukan rata-rata nilai untuk setiap departemen, tetapi hanya untuk nilai di atas 80:

SELECT department, AVG(grade) as average_grade
FROM students
WHERE grade > 80
GROUP BY department;

Berikut apa yang terjadi:

  1. Klause WHERE menyaring nilai 80 dan di bawah nya.
  2. Kemudian, kita mengelompokkan baris yang tersisa per departemen.
  3. Akhirnya, kita menghitung rata-rata nilai untuk setiap kelompok.

Hasilnya mungkin tampak seperti ini:

department average_grade
Computer Science 85.0
Mathematics 90.0
Physics 95.0

Perhatikan bahwa rata-rata nilai Departemen Ilmu Komputer berubah karena kita menyaring nilai Charlie sebesar 78.

Contoh 4: Menggunakan HAVING dengan GROUP BY

Klause HAVING mirip dengan WHERE, tetapi digunakan dengan GROUP BY untuk menyaring kelompok. Ayo temukan departemen dengan rata-rata nilai di atas 85:

SELECT department, AVG(grade) as average_grade
FROM students
GROUP BY department
HAVING average_grade > 85;

Berikut penguraian nya:

  1. Kita mengelompokkan murid per departemen.
  2. Kita menghitung rata-rata nilai untuk setiap departemen.
  3. Klause HAVING menyaring departemen dengan rata-rata nilai 85 atau kurang.

Hasilnya:

department average_grade
Mathematics 90.0
Physics 95.0

Fungsi GROUP BY Umum

Berikut adalah tabel dari fungsi agregat yang biasa digunakan dengan GROUP BY:

Fungsi Deskripsi
COUNT() Menghitung jumlah baris dalam kelompok
SUM() Menghitung jumlah total nilai
AVG() Menghitung rata-rata nilai
MAX() Menemukan nilai maksimal dalam kelompok
MIN() Menemukan nilai minimum dalam kelompok

Kesimpulan: Kekuatan GROUP BY

Dan begitulah, murid-murid sayangku! Kita telah melakukan perjalanan melalui kerajaan magis klause GROUP BY di SQLite. Ingat, GROUP BY adalah seperti organisator data pribadi Anda, membantu Anda membuat kesan daripada dataset besar dengan mengelompokkan item yang mirip bersama.

Sekarang Anda teruskan perjalanan SQL Anda, Anda akan menemukan GROUP BY adalah alat yang tak ternilai dalam set alat analisis data Anda. Itu tidak hanya tentang mengatur data - itu tentang mengungkapkan wawasan dan pola yang mungkin tetap tersembunyi.

Jadi, kali berikutnya Anda menghadapi gunung data, ingat analogi puing-puing Lego kita. Kelompokkan data Anda, hitung agregat, dan lihatlah bagaimana pola yang berarti muncul dari kekacauan. Semoga Anda beruntung saat melakukan query, dan semoga klausa GROUP BY Anda selalu efisien dan berinsight!

Credits: Image by storyset