0% menganggap dokumen ini bermanfaat (0 suara)
67 tayangan8 halaman

Modul 7 - SQL Aggregate

Modul ini membahas SQL aggregate function untuk menghitung agregasi data pada tabel, meliputi fungsi-fungsi seperti AVG, COUNT, SUM, MAX, MIN. Mahasiswa diajarkan cara menggunakan fungsi-fungsi tersebut untuk menjawab pertanyaan-pertanyaan analisis data, termasuk penggunaan grouping dan having clause. Tujuannya adalah agar mahasiswa dapat menerapkan agregasi SQL yang tepat untuk kebutuhan analisis data.

Diunggah oleh

Angela Gracia
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
67 tayangan8 halaman

Modul 7 - SQL Aggregate

Modul ini membahas SQL aggregate function untuk menghitung agregasi data pada tabel, meliputi fungsi-fungsi seperti AVG, COUNT, SUM, MAX, MIN. Mahasiswa diajarkan cara menggunakan fungsi-fungsi tersebut untuk menjawab pertanyaan-pertanyaan analisis data, termasuk penggunaan grouping dan having clause. Tujuannya adalah agar mahasiswa dapat menerapkan agregasi SQL yang tepat untuk kebutuhan analisis data.

Diunggah oleh

Angela Gracia
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 8

PRAKTIKUM SISTEM BASIS DATA

Modul 7: SQL Aggregate

Deskripsi:
Modul ini berisi materi mengenai bagaimana mendapatkan perhitungan agregasi menggunakan
SQL. Penggunaan sintaks agregasi juga seringkali mengharuskan proses pengelompokan
(grouping) dari record-record di tabel. Mahasiswa akan diajak untuk mahir menghitung agregasi
baik untuk data yang harus dikelompokkan maupun tidak.

Tujuan Praktikum:
1. Mahasiswa dapat menjelaskan berbagai macam operasi agregasi yang bisa dilakukan
antar terhadap suatu tabel dengan komposisi kolom tertentu.
2. Mahasiswa dapat menuliskan sintaks grouping dengan benar.
3. Mahasiswa dapat menerapkan operasi agregasi yang tepat untuk kebutuhan analisis data.

Alat dan Bahan:


1. Modul Praktikum
2. Komputer
3. MySQL/XAMPP MariaDB
4. Moodle

Waktu: 150 menit


Materi dan Pembagian Waktu:

No. Materi Waktu


1. Pretest 10 menit
2. Materi SQL Aggregation 50 menit
3. Mencoba latihan 45 menit
4. Posttest 45 menit

Materi Praktikum
Bagian ini akan membahas fungsi agregasi kelompok. Menurut definisi KBBI, agregasi adalah
pengumpulan sejumlah benda yang terpisah-pisah menjadi satu. Dalam hal ini, akan ada dua
proses yaitu pengumpulannya (grouping dengan klausa GROUP BY dan kondisi HAVING) dan
penghitungan hasil pengumpulannya yang umumnya ditempatkan di klausa SELECT. Masing-
masing proses ini dapat berdiri sendiri tanpa melibatkan proses lainnya.
Perhatikan contoh berikut:
Tabel 1. Tabel Dosen
nip namaPegawai namaProdi gajiTahunan
10101 Sriyanto Informatika 66000000
12121 Wahyu Akuntansi 75000000
15151 Mozart Sistem Informasi 68000000
22222 Einstein Desain Produk 60000000
32343 Spielberg Arsitektur 62000000
33456 Lucas Kedokteran 95000000
44565 Katz Biologi 79000000
58583 Charles Informatika 83000000
76543 Simon Biologi 85000000
76766 Peter Sistem Informasi 75000000
83821 Bagong Manajemen 66000000
98345 Karyono Pendidikan Bahasa 76000000

Jika kita memperhatikan Tabel 1 (tabel Dosen) di atas, kita mungkin menemui pertanyaan
berikut:
1) Berapakah rata-rata gaji dosen?
2) Berapa rata-rata gaji pegawai masing-masing prodi?
3) Berapa orang yang gajinya Rp 66.000.000,-?
4) Berapa total gaji yang harus disiapkan perusahaan per prodi?
5) Siapa yang memiliki gaji terendah dan siapa yang tertinggi?
Pertanyaan tersebut sangat umum dijumpai terlebih ketika sistem basis data sudah memasuki
tahap yang lebih tinggi, antara lain untuk keperluan analisis data. Kita tidak bisa mendapatkan
jawaban hanya dengan menggunakan sintaks SQL yang telah kita pelajari sebelumnya. Mungkin
untuk data kecil bisa dihitung secara manual. Namun untuk data yang besar atau raksasa, sangat
tidak efisien jika harus menghitung secara manual. Untuk menjawab pertanyaan tersebut kita
perlu mempelajari tentang SQL group-aggregate function.
Berikut ini fungsi agregasi yang didukung MySQL:
Tabel 2. Fungsi Aggregasi di MySQL

Nama Deskripsi
AVG() Mengembalikan nilai rata-rata
COUNT() Mengembalikan pencacahan dari jumlah row sesuai kondisi tertentu
COUNT(DISTINCT)
Mengembalikan pencacahan dari nilai-nilai yang berbeda (nilai yang
sama tidak dihitung)
GROUP_CONCAT() Mengembalikan string yang digabungkan
MAX() Mengembalikan nilai maksimal
MIN() Mengembalikan nilai minimal
STD() Mengembalikan nilai standar deviasi dari populasi
STDDEV()
STDDEV_POP()
STDDEV_SAMP() Mengembalikan nilai standar deviasi dari sampel
SUM() Mengembalikan jumlah
VAR_POP() Mengembalikan nilai standar variansi dari populasi
VARIANCE()
VAR_SAMP() Mengembalikan nilai variansi sampel
1. AVG([DISTINCT] expr)
Fungsi ini akan mengembalikan nilai rata-rata dari kolom atau ekspresi yang tercantum
pada expr. Opsi DISTINCT bisa digunakan untuk membuat baris-baris yang memiliki nilai
yang sama hanya dihitung satu kali. Jika tidak ada baris yang ditemukan, AVG()
mengembalikan NULL.
Contoh: “Tampilkan rata-rata gaji tahunan para dosen”
SELECT AVG(gajiTahunan)
FROM dosen;

Gambar 1. Hasil query

Contoh penggunaan dengan grouping: “Tampilkan rata-rata gaji tahunan para dosen per
prodi”
SELECT namaProdi, AVG(gajiTahunan)
FROM dosen
GROUP BY namaProdi;

Gambar 2. Hasil query

Saat sebuah query menggunakan grouping, adalah penting untuk memastikan bahwa
satu-satunya atribut yang muncul di klausa SELECT yang tidak diagregasikan adalah
atribut yang dituliskan di klausa GROUP BY. Dengan kata lain, tiap atribut yang tidak
muncul di klausa GROUP BY dapat muncul pada klausa SELECT sebagai atribut yang
diagregasi. Jika tidak diagregasi, maka query akan dianggap “erroneous”. Contoh berikut
adalah query yang erroneous karena nip tidak muncul di klausa GROUP BY, dan
kemunculannya di klausa SELECT tidak diagregasi.

SELECT namaProdi, nip, AVG(gajiTahunan)


FROM dosen
GROUP BY namaProdi;
Gambar 3. Hasil query

Perhatikan bahwa HAVING adalah klausa untuk memberikan batasan kondisi terhadap
hasil grouping. Penggunaan HAVING sangat mirip dengan WHERE, namun WHERE tidak
bisa memberi batasan terhadap hasil grouping. Berikut adalah contoh kemampuan
HAVING yang mirip dengan WHERE:
“Berapa rata-rata gaji tahunan untuk setiap prodi Arsitektur dan Desain Produk?”
SELECT namaProdi, AVG(gajiTahunan)
FROM dosen
GROUP BY namaProdi
HAVING namaProdi IN ("Arsitektur", "Desain Produk");
menghasilkan output sama dengan query berikut:
SELECT namaProdi, AVG(gajiTahunan)
FROM dosen
WHERE namaProdi IN ("Arsitektur", "Desain Produk")
GROUP BY namaProdi;

Gambar 4. Hasil query

Sedangkan berikut ini adalah contoh yang bisa dilakukan menggunakan HAVING dan
tidak bisa dilakukan menggunakan WHERE:
“Berapa rata-rata gaji tahunan untuk setiap prodi yang memiliki rata-rata gaji tahunan di
bawah Rp 75 juta?”
SELECT namaProdi, AVG(gajiTahunan)
FROM dosen
GROUP BY namaProdi
HAVING AVG(gajiTahunan) < 75000000;
Gambar 5. Hasil query

Setiap atribut yang dituliskan di klausa HAVING tanpa diagregasikan, harus muncul di
klausa GROUP BY. Jika tidak maka query akan dianggap erroneous.

Berikut ini urutan eksekusi query:


1) Seperti query tanpa agregasi, klausa FROM adalah klausa yang pertama
dieksekusi untuk mengambil sebuah relasi/tabel.
2) Jika klausa WHERE muncul, predikat di klausa WHERE diterapkan pada relasi
hasil pengambilan klausa FROM.
3) Tuple-tuple yang memenuhi predikat WHERE kemudian dikelompokkan
berdasarkan klausa GROUP BY jika ada. Jika GROUP BY tidak ada, seluruh set tuple
yang memenuhi predikat WHERE diperlakukan sebagai satu kelompok.
4) Klausa HAVING, jika ada, kemudian diterapkan untuk setiap kelompok. Kelompok
yang tidak memenuhi predikat HAVING kemudian dihilangkan.
5) Klausa SELECT menggunakan kelompok yang tersisa untuk memunculkan tuple
hasil dari query, menerapkan fungsi agregasi untuk mendapatkan

2. COUNT(expr)
Fungsi ini akan mengembalikan cacah jumlah dari nilai non-NULL dari expr atau baris
yang dikembalikan oleh statemen SELECT. Hasilnya bertipe data BIGINT.
Contoh: “Berapa jumlah dosen yang bergaji tahunan Rp 75 juta?” (2 orang)
SELECT COUNT(*)
FROM dosen
WHERE gajiTahunan = 75000000;

Contoh penggunaan COUNT dengan GROUP BY: “Berapa jumlah dosen per prodi?”
SELECT namaProdi, COUNT(*) AS jumlahDosen
FROM dosen
GROUP BY namaProdi;

Gambar 6. Hasil query


3. COUNT(DISTINCT expr)
Opsi DISTINCT bisa digunakan untuk membuat baris-baris yang memiliki nilai yang sama
hanya dihitung satu kali.

4. GROUP_CONCAT(expr)
Sesuai namanya, fungsi ini akan menggabungkan nilai-nilai dari suatu kolom hasil
agregasi menjadi satu sel saja.
Contoh:
SELECT namaProdi, GROUP_CONCAT(gajiTahunan)
FROM dosen
GROUP BY namaProdi;

Gambar 7. Hasil query

5. MAX (expr)
Fungsi ini akan menampilkan nilai terbesar dari populasi.
Untuk menampilkan siapa yang mendapat gaji terbesar adalah dengan subquery berikut:
SELECT namaPegawai
FROM dosen
WHERE gajiTahunan = (SELECT MAX(gajiTahunan) FROM dosen);

Bukan dengan query berikut:


SELECT namaPegawai, MAX(gajiTahunan)
FROM dosen

6. MIN(expr)
Fungsi ini akan menampilkan nilai terkecil dari populasi. Penggunaannya sama seperti
MAX(expr).

7. STD (expr)
Fungsi ini akan menampilkan nilai standar deviasi dari populasi.
Contoh:
SELECT STD(gajiTahunan) FROM dosen;

8. SUM (expr)
Fungsi ini akan menampilkan hasil penjumlahan total dari populasi.
Contoh:
SELECT SUM(gajiTahunan) FROM dosen;
Contoh berikut menjawab pertanyaan: “Berapa total gaji yang harus disiapkan
perusahaan per prodi?”
SELECT namaProdi, SUM(gajiTahunan)
FROM dosen
GROUP BY namaProdi;

9. VARIANCE (expr)
Fungsi ini akan menampilkan nilai variance dari populasi.
Contoh:
SELECT VARIANCE(gajiTahunan)
FROM dosen;

Sebagai tambahan, nilai NULL merepotkan pemrosesan operator agregasi. Contoh jika ada
beberapa tuple di tabel dosen yang memiliki nilai NULL pada gajinya. Ketika kita menjalankan
SUM terhadap gajiTahunan, apakah dosen yang gajinya NULL disamakan dengan Rp 0,-? Apakah
hasil SUM = NULL? Maka secara standar, seluruh fungsi agregasi kecuali COUNT(*) mengabaikan
nilai NULL.

Latihan Unguided:
Silakan menambahkan tabel mahasiswa berikut:
Tabel mahasiswa
nim nama namaProdi sksTotal ipk gender tglLahir
M223 Kenny Cahyadi Matematika 88 3.45 L 2002-12-24
M233 Widya Satriaji Matematika 76 4.00 L 2000-9-3
P878 Marsella Cinta Psikologi 102 3.73 P 2003-12-21
P899 Geovani Sinaga Psikologi 64 3.41 L 2002-2-25
T121 Dea Kinanti Teologi 83 2.75 P 2002-12-4
T132 Daniel Aryanto Teologi 75 2.99 L 2003-11-21
G777 Mathew Joseph Geografi 76 3.00 L 2003-5-24
G781 Wilma Cahyani Geografi 88 3.02 P 2002-9-24
M253 Theofilus Lukas Matematika 90 3.20 L 2002-12-14
P910 Nia Gunawan Psikologi 105 2.65 P 2000-5-8
T134 Kevin Jeremy Teologi 102 2.22 L 2003-10-10
T135 Desy Permata Teologi 46 3.93 P 2001-7-17
G799 Verina Devari Geografi 22 2.45 P 2002-4-7
M277 Annisa Flaviana Matematika 23 1.75 P 2000-4-4
P911 Yeremia Raharjo Psikologi 48 1.66 L 2002-5-4
P912 Joni Dwianto Psikologi 66 2.00 L 2002-8-17

1. Tampilkan nama prodi dan ipk terbesar dari setiap prodi.


2. Tampilkan rata-rata ipk mahasiswa laki-laki dan perempuan (dalam satu tabel).
3. Tampilkan nama prodi dan daftar mahasiswa yang berjenis kelamin pria (dalam satu
tabel dua kolom).
4. Tampilkan nama prodi dan jumlah mahasiswa di prodi tersebut.
5. Tampilkan nama prodi dan jumlah mahasiswa di prodi tersebut yang memiliki total SKS
di atas 80.
6. Tampilkan jumlah mahasiswa dikelompokkan berdasarkan tahun lahir.

7. Tampilkan nama mahasiswa yang sudah mengambil SKS terbanyak.


8. Tampilkan mahasiswa perempuan yang IPKnya di atas IPK rata-rata populasi.

9. Tampilkan nama prodi dan rata-rata IPK per prodinya dimana rata-rata IPK di atas 2.75.
10. Tampilkan rata-rata IPK dari mahasiswa yang sksTotalnya di bawah 60.

REFERENSI:
Silberschatz, A., Korth, H. & Sudarshan, S. (2020). Database System Concepts, McGrawHill.
MySQL Group By Functions - https://dev.mysql.com/doc/refman/5.7/en/group-by-
functions.html
Lynn Beighley. (2007). Head First SQL, 2007, O’Reilly. ISBN: 978-0-596-52684-9

Anda mungkin juga menyukai