- 1 1. Pendahuluan
- 2 2. Penggunaan Dasar Fungsi MAX
- 3 3. Mengambil Nilai Maksimum dengan Kondisi
- 4 4. Cara Mengambil Nilai Maksimum untuk Setiap Grup
- 5 5. Cara Mengambil Seluruh Rekaman dengan Nilai Maksimum
- 6 6. Pertimbangan Penting Saat Menggunakan Fungsi MAX
- 7 7. FAQ: Pertanyaan yang Sering Diajukan
- 7.1 Q1: Apakah fungsi MAX dapat digunakan pada beberapa kolom sekaligus?
- 7.2 Q2: Apa yang terjadi ketika fungsi MAX diterapkan pada kolom string?
- 7.3 Q3: Apa perbedaan antara fungsi MAX dan klausa ORDER BY?
- 7.4 Q4: Apakah fungsi MAX bekerja dengan benar ketika nilai NULL disertakan?
- 7.5 Q5: Bagaimana saya dapat meningkatkan kinerja saat menggunakan fungsi MAX?
- 7.6 Q6: Apa yang terjadi ketika menggabungkan MAX dengan klausa GROUP BY?
- 7.7 Q7: Jika beberapa catatan memiliki nilai maksimum yang sama, bagaimana saya dapat mengambil semuanya?
- 7.8 Q8: Dapatkah fungsi MAX digunakan bersama dengan fungsi jendela (window functions)?
- 8 8. Ringkasan
1. Pendahuluan
MySQL adalah sistem manajemen basis data yang banyak digunakan di seluruh dunia. Di antara banyak fiturnya, fungsi MAX adalah fungsi agregat penting yang sering digunakan dalam analisis data dan pembuatan laporan. Dengan menggunakan fungsi ini, Anda dapat dengan mudah mengambil nilai maksimum dari kolom yang ditentukan.
Artikel ini menjelaskan secara jelas segala hal mulai dari penggunaan dasar fungsi MAX MySQL hingga contoh lanjutan dan pertimbangan penting. Artikel ini dirancang untuk membantu baik pemula maupun pengguna menengah, jadi pastikan untuk menggunakannya sebagai referensi.
2. Penggunaan Dasar Fungsi MAX
Fungsi MAX dapat digunakan dengan berbagai tipe data, termasuk nilai numerik, tanggal, dan string. Pada bagian ini, kami akan menjelaskan penggunaan dasar secara detail.
Sintaks Fungsi MAX
Berikut adalah sintaks dasar fungsi MAX.
SELECT MAX(column_name) FROM table_name;
Dengan sintaks ini, Anda dapat mengambil nilai maksimum dari kolom yang ditentukan.
Contoh: Menggunakan MAX dengan Kolom Numerik
Contoh berikut mengambil gaji tertinggi dari tabel employees.
SELECT MAX(salary) FROM employees;
Contoh Output:
| MAX(salary) |
|---|
| 120000 |
Hasil ini menunjukkan bahwa nilai maksimum pada kolom salary adalah 120000.
Contoh: Menggunakan MAX dengan Kolom Tanggal
Untuk mengambil tanggal masuk (hire date) terbaru karyawan, gunakan kueri berikut:
SELECT MAX(hire_date) FROM employees;
Contoh Output:
| MAX(hire_date) |
|---|
| 2025-01-01 |
Hasil ini menunjukkan bahwa tanggal masuk terbaru adalah 2025-01-01.
Contoh: Menggunakan MAX dengan Kolom String
Fungsi MAX juga dapat digunakan pada kolom string. Untuk string, fungsi ini mengembalikan nilai yang muncul terakhir dalam urutan leksikografis (kamus).
SELECT MAX(last_name) FROM employees;
Contoh Output:
| MAX(last_name) |
|---|
| Yamamoto |
Hasil ini menunjukkan bahwa Yamamoto adalah nama yang muncul terakhir dalam urutan alfabet (lexicographical).
3. Mengambil Nilai Maksimum dengan Kondisi
Fungsi MAX juga dapat digunakan dengan kondisi. Pada bagian ini, kami menjelaskan cara mengambil nilai maksimum dengan kondisi tertentu.
Menggabungkan dengan Klausa WHERE
Untuk mengambil nilai maksimum dengan kondisi tertentu, gunakan klausa WHERE.
Contoh: Mengambil gaji tertinggi di antara karyawan yang departemen ID-nya 10
SELECT MAX(salary) FROM employees WHERE department_id = 10;
Contoh Output:
| MAX(salary) |
|---|
| 90000 |
Kueri ini mengambil gaji maksimum di antara karyawan yang departemen ID-nya 10.
Contoh Bisnis Praktis
Anda dapat menggunakan sintaks yang sama untuk mengambil biaya maksimum yang terkait dengan proyek tertentu.
SELECT MAX(cost) FROM projects WHERE project_status = 'active';
Kueri ini mengambil biaya maksimum di antara proyek dengan status active.
4. Cara Mengambil Nilai Maksimum untuk Setiap Grup
Dengan menggunakan klausa GROUP BY MySQL, Anda dapat mengambil nilai maksimum untuk setiap grup. Misalnya, ini sangat berguna saat menganalisis data dengan pengelompokan, seperti gaji tertinggi per departemen atau penjualan maksimum per bulan. Pada bagian ini, kami menjelaskan cara mengambil nilai maksimum per grup secara detail.
Sintaks Dasar
Untuk mengambil nilai maksimum per grup, tulis kueri sebagai berikut:
SELECT grouping_column, MAX(target_column)
FROM table_name
GROUP BY grouping_column;
Dengan sintaks ini, MySQL mengelompokkan data berdasarkan kolom yang ditentukan dan mengembalikan nilai maksimum dalam setiap grup.
Contoh: Mengambil Gaji Tertinggi per Departemen
Kueri berikut mengambil gaji tertinggi per departemen dari tabel employees.
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id;
Contoh Output:
| department_id | MAX(salary) |
|---|---|
| 1 | 120000 |
| 2 | 90000 |
| 3 | 80000 |
Hasil ini menunjukkan gaji maksimum (MAX(salary)) untuk setiap departemen (department_id).
Contoh: Mengambil Penjualan Maksimum per Bulan
Untuk mengambil jumlah penjualan maksimum untuk setiap bulan dari tabel penjualan, tulis kueri sebagai berikut:
SELECT DATE_FORMAT(sale_date, '%Y-%m') AS sale_month, MAX(amount)
FROM sales
GROUP BY sale_month;
Contoh Output:
| sale_month | MAX(amount) |
|---|---|
| 2025-01 | 50000 |
| 2025-02 | 70000 |
| 2025-03 | 60000 |
Dalam kueri ini, kolom sale_date diformat menjadi tahun-bulan (%Y-%m), dan jumlah penjualan maksimum diambil untuk setiap bulan.
Catatan Penting Saat Menggunakan GROUP BY
- Pembatasan pada Kolom yang Dimasukkan dalam Pernyataan SELECT Saat menggunakan klausa
GROUP BY, kolom yang dimasukkan dalam pernyataanSELECTharus salah satu dari berikut: * Kolom yang ditentukan dalam klausaGROUP BY* Fungsi agregat (mis., MAX, SUM, COUNT, dll.) Contoh: Kueri berikut akan menghasilkan error.SELECT department_id, salary FROM employees GROUP BY department_id;
Alasan: salary tidak termasuk dalam fungsi agregat atau klausa GROUP BY.
Penanganan Nilai NULL Jika kolom pengelompokan berisi nilai NULL, nilai NULL tersebut diperlakukan sebagai grup terpisah. Contoh: Rekaman dengan ID departemen NULL juga dihitung sebagai satu grup.
Optimasi Kinerja Saat mengelompokkan data dalam jumlah besar, penggunaan indeks dapat meningkatkan kinerja kueri. Tambahkan indeks sesuai kebutuhan.
5. Cara Mengambil Seluruh Rekaman dengan Nilai Maksimum
Menggunakan fungsi MAX MySQL memungkinkan Anda mengambil nilai maksimum dari kolom tertentu. Namun, fungsi ini tidak secara otomatis mengembalikan seluruh rekaman yang berisi nilai maksimum tersebut. Dalam analisis data dunia nyata dan aplikasi, Anda sering membutuhkan tidak hanya nilai maksimum itu sendiri tetapi juga informasi terkait dari kolom lain.
Pada bagian ini, kami menjelaskan secara detail cara mengambil seluruh rekaman yang berisi nilai maksimum.
Metode 1: Menggunakan Subquery
Anda dapat menggunakan subquery untuk mengambil rekaman yang berisi nilai maksimum dalam kolom tertentu.
Contoh: Mengambil Informasi untuk Karyawan dengan Gaji Tertinggi
SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);
Contoh Output:
| employee_id | name | salary | department_id |
|---|---|---|---|
| 101 | Tanaka | 120000 | 1 |
Cara kerja kueri ini:
- Subquery
(SELECT MAX(salary) FROM employees)mengambil gaji tertinggi. - Kueri luar mengambil seluruh rekaman yang cocok dengan gaji tertinggi tersebut.
Metode 2: Menggunakan JOIN
Menggunakan JOIN memungkinkan Anda membuat kueri yang lebih fleksibel.
Contoh: Mengambil Karyawan dengan Gaji Tertinggi per Departemen
SELECT e.*
FROM employees e
JOIN (
SELECT department_id, MAX(salary) AS max_salary
FROM employees
GROUP BY department_id
) subquery
ON e.department_id = subquery.department_id
AND e.salary = subquery.max_salary;
Contoh Output:
| employee_id | name | salary | department_id |
|---|---|---|---|
| 101 | Tanaka | 120000 | 1 |
| 202 | Suzuki | 90000 | 2 |
Cara kerja kueri ini:
- Subquery menghitung gaji tertinggi untuk setiap departemen.
- Kueri utama mengambil seluruh rekaman karyawan yang cocok dengan gaji maksimum tersebut.
Metode 3: Menggunakan Fungsi Jendela (MySQL 8.0+)
Di MySQL 8.0 dan versi selanjutnya, Anda dapat menggunakan fungsi jendela untuk mengambil rekaman dengan nilai maksimum secara lebih singkat dan efisien.
Contoh: Mengambil Karyawan dengan Gaji Tertinggi per Departemen
SELECT employee_id, name, salary, department_id
FROM (
SELECT *,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk
FROM employees
) ranked
WHERE rnk = 1;
Contoh Output:
| employee_id | name | salary | department_id |
|---|---|---|---|
| 101 | Tanaka | 120000 | 1 |
| 202 | Suzuki | 90000 | 2 |
Cara kerja kueri ini:
- Fungsi
RANK()memberi peringkat gaji dalam setiap departemen secara menurun. - Kueri luar mengekstrak rekaman di mana peringkatnya 1 (rekaman dengan nilai maksimum).
Catatan Penting
- Jika Beberapa Rekaman Memiliki Nilai Maksimum yang Sama * Jika beberapa rekaman memiliki nilai maksimum yang sama, semua rekaman yang cocok akan dikembalikan oleh metode mana pun. Contoh:
SELECT * FROM employees WHERE salary = (SELECT MAX(salary) FROM employees);
Contoh Output:
| employee_id | name | salary | department_id |
|---|---|---|---|
| 101 | Tanaka | 120000 | 1 |
| 102 | Sato | 120000 | 1 |
- Optimasi Kinerja
- Menggunakan subquery atau JOIN pada dataset besar dapat mengurangi kinerja.
- Pengindeksan yang tepat dapat secara signifikan meningkatkan kecepatan eksekusi query.
Contoh Praktis Bisnis
- Mengambil Produk dengan Harga Tertinggi
SELECT * FROM products WHERE price = (SELECT MAX(price) FROM products);
- Mengambil Informasi Detail Biaya Maksimum per Proyek
SELECT p.* FROM projects p JOIN ( SELECT project_id, MAX(cost) AS max_cost FROM project_costs GROUP BY project_id ) subquery ON p.project_id = subquery.project_id AND p.cost = subquery.max_cost;
6. Pertimbangan Penting Saat Menggunakan Fungsi MAX
Fungsi MAX MySQL adalah fungsi agregat yang sangat berguna, tetapi ada beberapa poin penting yang perlu diingat saat menggunakannya. Memahami karakteristik data, implikasi kinerja, dan cara penanganan nilai NULL membantu mencegah hasil yang salah dan penurunan kinerja. Pada bagian ini, kami menjelaskan pertimbangan utama saat menggunakan fungsi MAX.
Penanganan Nilai NULL
Di MySQL, nilai NULL diperlakukan sebagai “nilai tidak diketahui.” Oleh karena itu, saat menggunakan fungsi MAX, nilai NULL diabaikan.
Contoh: Mengambil Nilai Maksimum dari Data yang Termasuk NULL
SELECT MAX(salary) FROM employees;
Data:
| employee_id | name | salary |
|---|---|---|
| 1 | Tanaka | 50000 |
| 2 | Sato | NULL |
| 3 | Suzuki | 60000 |
Output:
| MAX(salary) |
|---|
| 60000 |
Poin Penting:
- Bahkan jika kolom
salaryberisi nilai NULL, fungsi MAX mengabaikannya selama perhitungan. - Anda harus mempertimbangkan dengan hati-hati bagaimana nilai NULL memengaruhi logika data Anda.
Ketika Ada Beberapa Nilai Maksimum
Fungsi MAX mengembalikan satu nilai maksimum, tetapi beberapa baris dapat memiliki nilai maksimum yang sama dalam dataset. Dalam kasus seperti itu, Anda perlu menyusun query untuk mengambil semua baris yang cocok.
Contoh: Mengambil Karyawan dengan Gaji Maksimum yang Sama
SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);
Data:
| employee_id | name | salary |
|---|---|---|
| 1 | Tanaka | 60000 |
| 2 | Sato | 60000 |
| 3 | Suzuki | 50000 |
Output:
| employee_id | name | salary |
|---|---|---|
| 1 | Tanaka | 60000 |
| 2 | Sato | 60000 |
Poin Penting:
- Jika MAX saja tidak cukup, gunakan subquery untuk mengambil semua baris yang cocok.
Dampak Kinerja
Fungsi MAX bekerja secara efisien pada query sederhana. Namun, kinerja dapat menurun ketika bekerja dengan dataset besar atau query yang kompleks.
Tips untuk Meningkatkan Kinerja
- Gunakan Indeks Menambahkan indeks pada kolom yang digunakan dalam fungsi MAX dapat secara signifikan meningkatkan kecepatan query.
CREATE INDEX idx_salary ON employees(salary);
- Filter Data yang Tidak Diperlukan Kurangi dataset dengan menggunakan klausa WHERE untuk membatasi baris target.
SELECT MAX(salary) FROM employees WHERE department_id = 1;
- Bagi dan Hitung Pertimbangkan menghitung nilai maksimum dalam subset terlebih dahulu, kemudian menentukan nilai maksimum akhir.
Pertimbangan Lain
- Dampak Tipe Data Perilaku fungsi MAX tergantung pada tipe data kolom.
- Numerik: Perbandingan numerik sederhana.
- String: Dibandingkan dalam urutan leksikografis.
- Tanggal: Mengembalikan tanggal paling terbaru (terakhir). Contoh:
SELECT MAX(last_name) FROM employees;
Dalam kasus ini, nilai maksimum ditentukan berdasarkan urutan string leksikografis.
- Data Hilang Selain NULL Jika data tidak lengkap atau formatnya tidak tepat, hasil perhitungan mungkin tidak sesuai harapan. Pembersihan data mungkin diperlukan.
- Menggabungkan dengan Fungsi Agregat Lain Saat menggabungkan MAX dengan fungsi agregat lain (seperti SUM atau AVG), pastikan Anda menafsirkan hasilnya dengan benar.
7. FAQ: Pertanyaan yang Sering Diajukan
Bagian ini merangkum dan menjelaskan pertanyaan umum tentang fungsi MAX MySQL. Ini mencakup topik dasar maupun lanjutan.
Q1: Apakah fungsi MAX dapat digunakan pada beberapa kolom sekaligus?
A1: Tidak, fungsi MAX beroperasi pada satu kolom saja. Jika Anda ingin mengambil nilai maksimum dari beberapa kolom, Anda harus menerapkan fungsi MAX pada setiap kolom secara terpisah.
Contoh: Mengambil Nilai Maksimum dari Beberapa Kolom
SELECT MAX(salary) AS max_salary, MAX(bonus) AS max_bonus
FROM employees;
Q2: Apa yang terjadi ketika fungsi MAX diterapkan pada kolom string?
A2: Ketika diterapkan pada kolom string, fungsi MAX mengembalikan nilai yang terakhir dalam urutan leksikografis (kamus).
Contoh: Mengambil Nilai String Terbesar
SELECT MAX(last_name) FROM employees;
Poin Penting:
- Dalam urutan leksikografis, “Z” muncul setelah “A”, dan angka serta simbol juga dievaluasi.
- Jika karakter khusus disertakan, hasilnya mungkin tidak sesuai dengan urutan yang Anda harapkan.
Q3: Apa perbedaan antara fungsi MAX dan klausa ORDER BY?
A3: Meskipun fungsi MAX dan klausa ORDER BY tampak melayani tujuan yang serupa, keduanya berperilaku berbeda.
- Fungsi MAX: Mengambil nilai maksimum dari kolom yang ditentukan secara langsung.
- Klausa ORDER BY: Mengurutkan data berdasarkan kolom yang ditentukan dan memungkinkan Anda mengambil nilai pertama atau terakhir sesuai kebutuhan.
Contoh: Mengambil Nilai Maksimum Menggunakan ORDER BY
SELECT * FROM employees
ORDER BY salary DESC
LIMIT 1;
Poin Penting:
- Fungsi MAX seringkali lebih efisien dalam hal kinerja.
- Klausa ORDER BY berguna ketika Anda memerlukan informasi tambahan bersama dengan catatan yang berisi nilai maksimum.
Q4: Apakah fungsi MAX bekerja dengan benar ketika nilai NULL disertakan?
A4: Ya, fungsi MAX mengabaikan nilai NULL. Oleh karena itu, nilai NULL tidak memengaruhi perhitungan nilai maksimum.
Contoh: Perilaku Ketika Nilai NULL Disertakan
SELECT MAX(salary) FROM employees;
Data:
| employee_id | name | salary |
|---|---|---|
| 1 | Tanaka | 60000 |
| 2 | Sato | NULL |
| 3 | Suzuki | 50000 |
Hasil:
| MAX(salary) |
|---|
| 60000 |
Catatan Penting:
Jika Anda ingin menyertakan nilai NULL dalam pemrosesan, gunakan fungsi IFNULL untuk mengganti NULL dengan nilai default.
SELECT MAX(IFNULL(salary, 0)) FROM employees;
Q5: Bagaimana saya dapat meningkatkan kinerja saat menggunakan fungsi MAX?
A5: Pertimbangkan pendekatan berikut:
- Tambahkan Indeks: Menambahkan indeks pada kolom yang digunakan dalam fungsi MAX dapat secara signifikan meningkatkan kinerja kueri.
CREATE INDEX idx_salary ON employees(salary);
- Filter Data Target: Gunakan klausa WHERE untuk mengurangi jumlah baris yang diproses.
SELECT MAX(salary) FROM employees WHERE department_id = 1;
- Optimalkan Kueri: Hilangkan perhitungan yang tidak perlu dan pertahankan struktur kueri tetap sederhana.
Q6: Apa yang terjadi ketika menggabungkan MAX dengan klausa GROUP BY?
A6: Ketika menggabungkan GROUP BY dengan fungsi MAX, Anda dapat mengambil nilai maksimum untuk setiap grup.
Contoh: Mengambil Gaji Tertinggi per Departemen
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id;
Hasil:
| department_id | MAX(salary) |
|---|---|
| 1 | 120000 |
| 2 | 90000 |
Q7: Jika beberapa catatan memiliki nilai maksimum yang sama, bagaimana saya dapat mengambil semuanya?
A7: Gunakan subkueri atau JOIN untuk mengambil semua catatan yang memiliki nilai maksimum yang sama.
Contoh: Mengambil Semua Catatan dengan Nilai Maksimum
SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);
Q8: Dapatkah fungsi MAX digunakan bersama dengan fungsi jendela (window functions)?
A8: Ya, pada MySQL 8.0 dan versi selanjutnya, Anda dapat menggabungkan MAX dengan fungsi jendela untuk kueri yang lebih fleksibel.
Contoh: Mengambil Karyawan dengan Gaji Tertinggi per Departemen
SELECT employee_id, name, salary, department_id
FROM (
SELECT *,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk
FROM employees
) ranked
WHERE rnk = 1;

8. Ringkasan
Fungsi MAX MySQL adalah alat yang kuat untuk operasi basis data dan analisis data. Dalam artikel ini, kami secara komprehensif membahas segala hal mulai dari penggunaan dasar fungsi MAX hingga kueri bersyarat, pengelompokan, pengambilan seluruh catatan dengan nilai maksimum, dan optimasi kinerja.
Poin Utama
Penggunaan Dasar Fungsi MAX
Fungsi MAX digunakan untuk mengambil nilai maksimum dari kolom yang ditentukan. Fungsi ini mendukung berbagai tipe data, termasuk angka, string, dan tanggal.Pengambilan Nilai Maksimum Bersyarat
Dengan menggunakan klausaWHERE, Anda dapat mengambil nilai maksimum yang sesuai dengan kondisi tertentu. Ini berguna untuk analisis berbasis proyek atau departemen.Mengambil Nilai Maksimum per Grup
Kami menjelaskan cara menggunakan klausaGROUP BYuntuk mengambil nilai maksimum untuk setiap grup, seperti gaji per departemen atau penjualan per bulan.Mengambil Seluruh Rekaman dengan Nilai Maksimum
Anda belajar cara secara efisien mengambil seluruh rekaman yang berisi nilai maksimum menggunakan subquery, JOIN, dan fungsi window.Pertimbangan Penting Saat Menggunakan MAX
Penting untuk mempertimbangkan penanganan NULL, nilai maksimum ganda, dan dampak kinerja.FAQ
Kami menjawab pertanyaan umum, termasuk cara menggunakan MAX dengan beberapa kolom dan tips untuk mengoptimalkan kinerja.
Pemikiran Akhir
Dengan memanfaatkan fungsi MAX secara tepat, analisis data dan pelaporan menjadi jauh lebih efisien. Terus berlatih SQL untuk membangun kueri yang lebih canggih.
Kami berharap artikel ini membantu memperdalam pemahaman Anda tentang manipulasi data dan analisis menggunakan MySQL.


