KATEGORI: DATABASE

Fungsi Skalar (satuan) dan Fungsi Aggregate (kumpulan) dalam MySQL

Membahas perbedaan dan penggunaan kedua jenis fungsi dalam MySQL. Penting! Karena dapat membantu kita saat mengelola data dengan klausa SELECT.

Do Exploit
4 min readJan 19, 2021
Perbedaan Fungsi Aggregate dan Fungsi Skalar
Background bu Pixabay & Icon by FlatIcon.

Seperti yang kita ketahui, fungsi dalam pemrograman adalah kumpulan kode yang bisa digunakan berulang-ulang tanpa perlu menulis kembali kodenya. Syntax pemanggilan fungsi dalam Python dan MySQL memiliki syntax yang serupa yaitu nama_fungsi().

⚠️Diharapkan kalian sudah membaca dan mempraktikan tutorial sebelumnya!

Siapkan database bernama employees: Lalu buatlah tabel (Klik disini) dan gunakan kedua script yang HR Sample Database in MySQL dan HR Data in MySQL.

Image & Database From SQLTutorial.

Pengetahuan Data

Kita hanya akan menggunakan 1 tabel saja yaitu: employees, tabel ini merupakan list karyawan aktif di perusahaan beserta gaji, letak departemen, tanggal di rekrut dan masih banyak lagi. Beberapa kolomnya sangat cocok untuk dijadikan contoh penggunaan fungsi.

Dibuat oleh Diagrams.Net

Perbedaan Fungsi Skalar dan Fungsi Aggregate

Fungsi skalar adalah fungsi yang hanya dapat bekerja untuk 1 nilai saja. Berbeda dengan fungsi aggregate yang dapat bekerja untuk beberapa nilai tapi bisa juga dengan 1 nilai. Simak cerita saya.

Dalam Angka/Desimal

Sebelumnya kita tau tabel employee berisi list para karyawan. Disana juga terkandung kolom salary atau gaji perbulan, yang kita ingin ketahui adalah:

Berapa sih budget yang dikeluarkan oleh perusahaan untuk karyawan perbulannya?

Perlu kita ketahui juga, kolom salary mengandung beberapa nilai. Artinya bukanlah tugas fungsi skalar, melainkan tugas fungsi aggregate yang namanya fungsi SUM().

mysql> SELECT SUM(salary) FROM employees;
+-------------+
| SUM(salary) |
+-------------+
| 322400.00 |
+-------------+

Tapiii itu ada 2 nol dibelakang koma, tolong dihilangin dong.

Kalian pasti sudah tau, disinilah fungsi skalar bekerja karena dapat kalian lihat juga bahwa fungsi SUM(salary) menghasilkan/mengembalikan 1 nilai.

mysql> SELECT ROUND(SUM(salary)) FROM employees;
+--------------------+
| ROUND(SUM(salary)) |
+--------------------+
| 322400 |
+--------------------+
Keterangan:
* Fungsi ROUND berguna untuk membulatkan bilangan, syntaxnya ROUND(bilangan_yang_akan_dibulatkan, jumlah_bilangan_dibelakang_koma). Pada contoh ini, kita tidak menggunakan parameter kedua, maka parameter tersebut mengikuti defaultnya yaitu 0. Artinya menghilangkan koma dan nilai dibelakangnya.

Sekarang nol dibelakang koma telah hilang berikut juga dengan komanya sendiri. Hanya tambahan saja, jika kalian lihat nama kolomnya mungkin masih terbilang pendek, namun bagaimana jika fungsinya sudah bercabang-cabang? Ga enak dibaca bukan. Mari gunakan klausa AS.

mysql> SELECT ROUND(SUM(salary)) AS total_salary FROM employees;
+--------------+
| total_salary |
+--------------+
| 322400 |
+--------------+
Keterangan:
* Klausa AS berguna untuk memberikan alias pada nama kolomnya. Bisa digunakan untuk kolom yang telah diolah menggunakan fungsi, atau bisa juga terhadap kolom biasa.

Dalam Huruf/String

Loh, fungsi dalam pengelolaan string juga ada ya? Ada dongg. Seluruh fungsi yang digunakan untuk string adalah fungsi skalar. Biar mudah, kita praktikkan langsung, tetap menggunakan tabel employees sebelumnya.

Kita tau tabel employees mengandung kolom first_name dan last_name, yang ingin kita lakukan adalah:

Bagaimana cara menggabungkan ke-2 kolom tersebut menjadi 1 kolom saja?

mysql> SELECT CONCAT(first_name, " ", last_name) FROM employees;
+-----------------------------------+
| CONCAT(first_name, " ",last_name) |
+-----------------------------------+
| Steven King |
| Neena Kochhar |
| Lex De Haan |
| Alexander Hunold |
| ... |
| Masih banyak lagi |
Keterangan:
* Fungsi CONCAT berguna untuk menggabungkan dua atau lebih data menjadi satu. Pada contoh ini kita menggabungkan 3 data, yaitu first_name, spasi dan last_name.

Oh iya, kayaknya ada satu hal yang bikin kalian bertanya-tanya: Bisa gak sih munculin kolom lain sekaligus kita juga nampilin kolom yang udah diolah sama fungsi? Bisa dongg, contohnya munculin kolom phone_number sama hire_date yaa! Kalian cukup tambahin koma aja seperti query SELECT umumnya.

mysql> SELECT CONCAT(first_name, " ",last_name) AS full_name, phone_number, hire_date FROM employees;
+-------------------+--------------+------------+
| full_name | phone_number | hire_date |
+-------------------+--------------+------------+
| Steven King | 515.123.4567 | 1987-06-17 |
| Neena Kochhar | 515.123.4568 | 1989-09-21 |
| Lex De Haan | 515.123.4569 | 1993-01-13 |
| Alexander Hunold | 590.423.4567 | 1990-01-03 |
| ... | | |
| Masih banyak lagi | | |

Kayaknya lebih aman kalo nampilin nama inisial aja deh.

mysql> SELECT CONCAT(LEFT(first_name, 2), RIGHT(last_name, 3)) AS inisial_name FROM employees;
+--------------+
| inisial_name |
+--------------+
| Sting |
| Nehar |
| Leaan |
| Alold |
* Spasi didalam parameter CONCAT dihilangkan agar menampilkan inisial nama yang lebih rahasia.

Pembedahan:

  • Pada parameter CONCAT pertama, yaitu LEFT(first_name, 2). Artinya menampilkan 2 huruf awal pada kolom first_name.
  • Lalu pada parameter CONCAT pertama, yaitu RIGHT(last_name, 3). Artinya menampilkan 3 huruf terakhir pada kolom last_name.

Sehingga jumlah huruf yang dihasilkan dari pengelolaan tersebut adalah 5.

Klik disini untuk mengetahui lebih banyak tentang Fungsi — Fungsi Dalam MySQL <- Berbahasa Indonesia.

Kesimpulan

Fungsi skalar adalah fungsi yang bekerja untuk setiap baris dalam data. Sedangkan fungsi Aggregate adalah fungsi yang bekerja untuk seluruh data sekaligus.

--

--

Do Exploit
Do Exploit

Written by Do Exploit

I share stories about what I've learned in the past and now. Let's connect to Instagram! @do.exploit

No responses yet