Setelah kegiatan pembelajaran ini, diharapkan:
- Siswa mampu memahami macam-macam fungsi agregasi dalam basis data
- Siswa mampu menuliskan perintah fungsi agregasi dengan benar
- Siswa mampu menerapkan fungsi agregasi dalam basis data
Di samping menampilkan nilai-nilai atribut yang ada dalam tabel, sering pula diperlukan untuk meringkas data tanpa benar-benar mengambil semuanya. Contohnya adalah kebutuhan untuk menampilkan banyaknya data, total nilai suatu atribut, rata-rata nilai atribut, dan nilai atribut terbesar ataupun terkecil. Data semacam itu dapat diperoleh dengan menggunakan fungsi-fungsi yang memiliki padanan dalam bahasa kueri formal.
Fungsi agregasi adalah fungsi yang digunakan untuk melakukan operasi terhadap himpunan data dalam perintah kueri. Fungsi agregasi disebut juga fungsi ringkasan yaitu fungsi yang beroperasi pada sekumpulan baris untuk menghitung dan mengembalikan nilai tunggal. Fungsi agregasi dapat digabungkan dengan parameter WHERE untuk memberikan hasil yang lebih kompleks.
Fungsi ini sering digunakan untuk mengambil data dengan tujuan analisis dan pelaporan. Contoh dari jenis pengambilan ini adalah menentukan banyak baris dalam tabel, mendapatkan jumlah sekelompok baris dalam sebuah tabel, menemukan nilai tertinggi, terendah, dan rata-rata dalam kolom tabel (baik untuk semua baris atau untuk baris tertentu).
Format dasarnya adalah:
SELECT FUNCTION_AGGREGATE(nama_kolom)
Catatan: Antara nama aggregate dan kurung tidak boleh ada spasi
Berikut adalah beberapa fungsi agregasi yang akan kita bahas yaitu:
- COUNT
- SUM
- AVG
- MAX
- MIN
Sistem manajemen database yang kita gunakan dalam pembelajaran ini adalah MariaDB.
Dalam pembelajaran ini, database telah disediakan dengan nama id19979687_db_sekolah. Contoh penerapan fungsi agregasi pada materi menggunakan tabel yang telah disediakan. Diagram hubungan entitas pada database id19979687_db_sekolah dapat dilihat pada gambar dibawah ini.
Berikut adalah tabel yang telah disediakan:
id_siswa | nis | nama | jns_kel | umur | tinggi_badan | berat_badan |
---|---|---|---|---|---|---|
S01 | 13261 | Aisyah Alifa | P | 17 | 155 | 45 |
S02 | 13262 | Rendra Kurniawan | L | 18 | 173 | 55 |
S03 | 13263 | Iqbal Maulana Hakim | L | 19 | 165 | 50 |
S04 | 13264 | Gracia Putri Lestari | P | 18 | 158 | 46 |
S05 | 13265 | Nanda Amira Athaya | P | 17 | 156 | 41 |
S06 | 13266 | Fajar Setiawan | L | 17 | 153 | 45 |
S07 | 13267 | Naura Athalia | P | 18 | 171 | 60 |
S08 | 13268 | Irfan Maulana | L | 17 | 163 | 58 |
S09 | 13269 | Yudi Prasetyo Nugroho | L | 19 | 175 | 62 |
S10 | 13270 | Rayhanah Aziza | P | 19 | 154 | 43 |
id_nilai | id_siswa | id_matpel | nilai | predikat_nilai | keterangan |
---|---|---|---|---|---|
N01 | S01 | M02 | 73 | Cukup | Lulus |
N02 | S02 | M02 | 75 | Baik | Lulus |
N03 | S03 | M02 | 65 | Kurang | Tidak Lulus |
N04 | S04 | M02 | 55 | Kurang | Tidak Lulus |
N05 | S05 | M02 | 80 | Baik | Lulus |
N06 | S06 | M02 | 65 | Kurang | Tidak Lulus |
N07 | S07 | M02 | 86 | Baik Sekali | Lulus |
N08 | S08 | M02 | 85 | Baik Sekali | Lulus |
N09 | S09 | M02 | 60 | Kurang | Tidak Lulus |
N10 | S10 | M02 | 90 | Baik Sekali | Lulus |
id_matpel | id_guru | nama_matpel | jurusan | jp_perminggu |
---|---|---|---|---|
M01 | G01 | Desain Media Interaktif | MM | 12 |
M02 | G05 | Basis Data | RPL | 4 |
M03 | G01 | Animasi 2D dan 3D | MM | 12 |
M04 | G02 | Desain Grafis Percetakan | MM | 12 |
M05 | G05 | Pemodelan Perangkat Lunak | RPL | 4 |
M06 | G06 | Administrasi Infrastruktur Jaringan | TKJ | 9 |
M07 | G07 | Teknik Pengolahan Audio dan Video | MM | 13 |
M08 | G04 | Pemrograman Berorientasi Objek | RPL | 8 |
M09 | G03 | Teknologi Layanan Jaringan | TKJ | 8 |
M10 | G06 | Administrasi Sistem Jaringan | TKJ | 6 |
M11 | G04 | Pemrograman Web dan Perangkat Bergerak | RPL | 8 |
id_guru | nip | nama | jns_kel | gaji | pendidikan_terakhir |
---|---|---|---|---|---|
G01 | 13254 | Indah Wijaya | P | 4000000 | S1 |
G02 | 14325 | Siska Nur Azizah | P | 4500000 | S1 |
G03 | 12543 | Fauzi Rahmadi | L | 5000000 | S2 |
G04 | 15234 | Luna Ardhita Puspita | P | 3000000 | D3 |
G05 | 13542 | Hafizh | L | 4200000 | S1 |
G06 | 15432 | Dita Anggraini | P | 4800000 | S2 |
G07 | 12235 | Farhan Alfi | L | 3500000 | D3 |
id_ortu | id_siswa | nama_ayah | gaji | pendidikan_terakhir |
---|---|---|---|---|
R01 | S01 | Budi Santoso | 5000000 | S1 |
R02 | S02 | Kurniawan Prasetya | 7000000 | S2 |
R03 | S03 | Adi Pranata | 4000000 | SMA |
R04 | S04 | Andrea | 5500000 | S1 |
R05 | S05 | Hadi Saputra | 8000000 | S2 |
R06 | S06 | Ario Jati | 3500000 | SMA |
R07 | S07 | Sofyan Wanandi | 4500000 | SMA |
R08 | S08 | Indra Budiman | 7500000 | S1 |
R09 | S09 | Denny Prasetyo | 8500000 | S2 |
R10 | S10 | Taufik Hidayat | 6000000 | S1 |
Adapun untuk latihan, database telah disediakan dengan nama id19979687_db_perusahaan. Tabel untuk latihan juga telah disediakan. Diagram hubungan entitas pada database id19979687_db_perusahaan dapat dilihat pada gambar dibawah ini.
Berikut adalah tabel yang telah disediakan untuk latihan:
id_karyawan | id_jabatan | nama | jns_kel | umur | status_karyawan | sertifikasi |
---|---|---|---|---|---|---|
1 | J07 | Adam Pramudita | L | 28 | Kontrak | 3 |
2 | J11 | Ade Indriani | P | 30 | Tetap | 1 |
3 | J02 | Bella | P | 26 | Kontrak | 2 |
4 | J06 | Bunga Fitriani | P | 33 | Tetap | 4 |
5 | J13 | Deni Hermawan | L | 38 | Tetap | 5 |
6 | J03 | Eko Prasetyo | L | 35 | Tetap | 3 |
7 | J04 | Galang Pratama | L | 26 | Kontrak | 1 |
8 | J01 | Hadi Susilo | L | 32 | Tetap | 2 |
9 | J15 | Indah Purnama | P | 29 | Tetap | 1 |
10 | J14 | Kurnia Anugerah | L | 36 | Tetap | 4 |
11 | J12 | Nindy Puspita | P | 25 | Kontrak | 2 |
12 | J08 | Oktavia | P | 27 | Tetap | 3 |
13 | J05 | Saiful Muzakir | L | 37 | Tetap | 1 |
14 | J10 | Trias Wibowo | L | 30 | Kontrak | 2 |
15 | J09 | Wahyu Pradana | L | 34 | Tetap | 1 |
id_jabatan | nama_jabatan | divisi | gaji_pokok |
---|---|---|---|
J01 | Administrator Jaringan | Infrastruktur IT | 12000000 |
J02 | Administrator Sistem | Infrastruktur IT | 12000000 |
J03 | Analis Bisnis | Marketing | 12000000 |
J04 | Analis Sistem | Arsitektur Solusi | 17000000 |
J05 | Back-end Developer | RnD | 15000000 |
J06 | Data Analyst | Data Science | 12000000 |
J07 | Data Scientist | Data Science | 15000000 |
J08 | Desainer UI/UX | RnD | 14000000 |
J09 | Front-end Developer | RnD | 14000000 |
J10 | Full-stack Developer | RnD | 16000000 |
J11 | IT Support | Infrastruktur IT | 11000000 |
J12 | Konsultan Teknis | Arsitektur Solusi | 18000000 |
J13 | Mobile Developer | RnD | 13000000 |
J14 | Pengembang Bisnis | Marketing | 13000000 |
J15 | QA Engineer | RnD | 12000000 |
id_proyek | penanggung_jawab | nama_proyek | anggaran | durasi_bulan | status |
---|---|---|---|---|---|
P01 | 13 | Pembuatan Profil Perusahaan | 30000000 | 4 | Sedang Dikerjakan |
P02 | 15 | Implementasi Sistem Absensi Karyawan | 20000000 | 3 | Sedang Dikerjakan |
P03 | 5 | Pengembangan Aplikasi Mobile Survei | 15000000 | 3 | Selesai |
P04 | 13 | Implementasi Cloud Server | 40000000 | 6 | Selesai |
P05 | 15 | Pengembangan Aplikasi Penggajian | 25000000 | 4 | Menunggu |
P06 | 8 | Peningkatan Keamanan Jaringan | 20000000 | 3 | Belum Dimulai |
P07 | 1 | Pengembangan Aplikasi Data Mining | 40000000 | 7 | Menunggu |
P08 | 7 | Pemeliharaan Sistem Informasi | 20000000 | 5 | Sedang Dikerjakan |
P09 | 8 | Peningkatan Infrastruktur Jaringan | 35000000 | 7 | Belum Dimulai |
P10 | 4 | Implementasi Big Data untuk Analisis Data | 80000000 | 10 | Menunggu |
id_kinerja | id_karyawan | proyek_selesai | nilai_kinerja | kategori_kinerja | insentif |
---|---|---|---|---|---|
1 | 1 | 5 | 85 | baik | 500000 |
2 | 2 | 7 | 78 | cukup | 0 |
3 | 3 | 9 | 92 | sangat baik | 600000 |
4 | 4 | 6 | 80 | baik | 300000 |
5 | 5 | 4 | 88 | sangat baik | 500000 |
6 | 6 | 8 | 75 | cukup | 0 |
7 | 7 | 3 | 90 | sangat baik | 600000 |
8 | 8 | 10 | 80 | baik | 300000 |
9 | 9 | 7 | 85 | baik | 500000 |
10 | 10 | 12 | 93 | sangat baik | 600000 |
11 | 11 | 4 | 82 | baik | 300000 |
12 | 12 | 6 | 75 | cukup | 0 |
13 | 13 | 11 | 91 | sangat baik | 600000 |
14 | 14 | 9 | 86 | baik | 500000 |
15 | 15 | 8 | 79 | cukup | 0 |
id_kehadiran | id_karyawan | kehadiran | terlambat | kategori_absensi |
---|---|---|---|---|
1 | 1 | 258 | 4 | baik |
2 | 2 | 254 | 2 | cukup |
3 | 3 | 255 | 8 | cukup |
4 | 4 | 256 | 1 | baik |
5 | 5 | 257 | 2 | sangat baik |
6 | 6 | 258 | 0 | sangat baik |
7 | 7 | 253 | 5 | cukup |
8 | 8 | 259 | 2 | sangat baik |
9 | 9 | 258 | 4 | baik |
10 | 10 | 260 | 3 | sangat baik |
11 | 11 | 257 | 6 | baik |
12 | 12 | 256 | 4 | baik |
13 | 13 | 258 | 1 | sangat baik |
14 | 14 | 259 | 2 | sangat baik |
15 | 15 | 257 | 0 | sangat baik |