0Pricing
Coding Interview Prep · Pelajaran

MIN, MAX, dan Agregasi Non-Numerik

Agregasikan tanggal dan string, serta pahami arti MIN pada teks.

MIN, MAX, dan Agregasi Non-Numerik adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.

MIN dan MAX Tidak Hanya untuk Angka

Kandidat mengira MIN dan MAX hanya berfungsi pada angka. Pewawancara senang bertanya: "Apa yang dikembalikan oleh MAX(name)? Bagaimana dengan MIN(order_date)?"

Kenyataannya, MIN dan MAX berfungsi pada tipe apa pun yang dapat diurutkan — angka, tanggal, dan teks. Memahami aturan pengurutan untuk setiap tipe adalah keterampilan yang sebenarnya sedang diuji.

Kasus Numerik

Mari mulai dari hal yang sudah lazim. Pada kolom numerik, MIN mengembalikan nilai terkecil dan MAX mengembalikan nilai terbesar. Sederhana.

Seperti agregat lainnya, MIN dan MAX mengabaikan NULL. NULL tidak pernah menjadi nilai minimum atau maksimum; NULL hanya dilewati. Jika semua nilai adalah NULL, keduanya mengembalikan NULL.

SELECT MIN(salary) AS lowest, MAX(salary) AS highest
FROM employees;

MIN dan MAX pada Tanggal

Tanggal dan stempel waktu dapat diurutkan sepenuhnya, sehingga MIN(order_date) menghasilkan tanggal paling awal dan MAX(order_date) menghasilkan tanggal paling akhir.

Dengan cara ini, Anda dapat menjawab "kapan pesanan pertama dibuat?" (MIN) dan "kapan aktivitas terbaru terjadi?" (MAX) tanpa mengurutkan dan membatasi hasil. Inilah solusi idiomatis berbasis himpunan.

SELECT
  MIN(order_date) AS first_order,
  MAX(order_date) AS latest_order
FROM orders;

Rentang Tanggal dalam Satu Kueri

Pertanyaan lanjutan yang umum: "Sudah berapa lama pelanggan ini aktif?" Gabungkan MIN dan MAX, lalu kurangkan.

Ini menghitung rentang antara pesanan pertama dan terakhir. Sintaks pengurangan yang tepat berbeda-beda menurut dialek, tetapi gagasan MIN/MAX berlaku secara universal dan menunjukkan bahwa Anda dapat menyatakan rentang secara deklaratif.

SELECT
  customer_id,
  MIN(order_date) AS first_order,
  MAX(order_date) AS last_order,
  MAX(order_date) - MIN(order_date) AS active_days
FROM orders
GROUP BY customer_id;

MIN dan MAX pada Teks

Inilah bagian yang mengejutkan banyak orang. Pada kolom teks, MIN dan MAX menggunakan pengurutan leksikografis (berdasarkan abjad) sesuai dengan kolasi kolom tersebut.

Jadi, MIN(name) menghasilkan nama yang berada paling awal menurut abjad, sedangkan MAX(name) menghasilkan nama yang berada paling akhir. MIN pada {'Carol', 'Alice', 'Bob'} menghasilkan 'Alice'; MAX menghasilkan 'Carol'.

SELECT MIN(name) AS first_alpha, MAX(name) AS last_alpha
FROM employees;
-- with Alice, Bob, Carol: 'Alice' and 'Carol'

Kolasi dan Kepekaan Huruf Besar-Kecil

Pengurutan teks bergantung pada kolasi, yang mengatur kepekaan huruf besar-kecil dan aturan lokal. Dalam banyak kolasi bawaan, huruf besar dapat diurutkan sebelum huruf kecil, sehingga MAX dari {'apple', 'Banana'} mungkin mengejutkan Anda.

Dalam wawancara, sebutkan bahwa hasil MIN/MAX pada teks bergantung pada kolasi. Nuansa ini membedakan jawaban yang dihafalkan dari pemahaman yang benar-benar mendalam.

Yang NOT Berarti MIN(text)

Kesalahpahaman yang sering terjadi adalah bahwa MIN(name) menghasilkan teks terpendek atau MAX(name) menghasilkan teks terpanjang. Itu tidak benar. MIN/MAX sepenuhnya berkaitan dengan urutan pengurutan, bukan panjang.

Jika Anda benar-benar memerlukan teks terpanjang, urutkan berdasarkan LENGTH(name) dan ambil baris teratas, atau gunakan MAX(LENGTH(name)) untuk mendapatkan panjangnya saja. Jangan mencampuradukkan pengurutan berdasarkan nilai dengan panjang.

SELECT MAX(LENGTH(name)) AS longest_name_length
FROM employees;

MIN/MAX Tidak Menggabungkan Kolom

Jebakan penting: MIN dan MAX bekerja pada satu kolom secara terpisah. Keduanya tidak mengembalikan seluruh baris yang berisi nilai minimum atau maksimum.

Jika Anda menulis SELECT MIN(salary), name tanpa pengelompokan, Anda tidak mendapatkan nama penerima gaji terendah — Anda mendapatkan kesalahan atau nama sembarang, bergantung pada dialeknya. Untuk mengambil seluruh baris, gunakan ORDER BY + LIMIT atau fungsi jendela.

-- Wrong assumption: this does NOT give the lowest earner's name.
-- Correct approach to get the whole row:
SELECT name, salary
FROM employees
ORDER BY salary ASC
LIMIT 1;

Ringkasan Perilaku NULL pada MIN/MAX

Sama seperti SUM dan AVG, MIN dan MAX melewati NULL. NULL bukan nilai terkecil maupun terbesar.

  • Nilai campuran + NULL: NULL diabaikan, lalu min/max nyata dikembalikan.
  • Semua nilai NULL atau tidak ada baris: MIN dan MAX mengembalikan NULL.

Konsistensi antaragregat ini merupakan poin yang baik untuk disampaikan: "Semua agregat standar mengabaikan NULL."

Menerapkannya dalam Grup

MIN dan MAX sangat berguna bersama GROUP BY untuk mencari nilai ekstrem per grup. "Gaji tertinggi per departemen" adalah contoh klasik.

Ini mengembalikan satu baris per departemen dengan gaji tertinggi departemen tersebut. Ingat: hasilnya adalah nilainya, bukan karyawannya. Memasangkan nama karyawan dengan nilai tersebut merupakan masalah lanjutan yang terpisah dan umum.

SELECT department, MAX(salary) AS top_salary
FROM employees
GROUP BY department;

Cara Menjawab dengan Percaya Diri

Jawaban wawancara yang kuat: "MIN dan MAX bekerja pada jenis data apa pun yang dapat diurutkan. Untuk angka, hasilnya adalah yang terkecil/terbesar; untuk tanggal, yang paling awal/paling akhir; sedangkan untuk teks, urutannya berdasarkan abjad sesuai kolasi kolom. Keduanya mengabaikan NULL dan hanya mengembalikan NULL jika tidak ada nilai non-NULL. Keduanya mengembalikan satu nilai, bukan seluruh baris, jadi untuk mengambil barisnya saya akan menggunakan ORDER BY dengan LIMIT atau fungsi jendela."

Pemeriksaan Singkat

Analisis agregasi teks.

Rangkuman

Segala hal tentang MIN dan MAX:

  • Bekerja pada jenis data apa pun yang dapat diurutkan: angka, tanggal, dan teks.
  • Teks menggunakan urutan berdasarkan abjad/kolasi, bukan panjang.
  • Tanggal: MIN = paling awal, MAX = paling akhir.
  • Keduanya mengabaikan NULL; jika semua nilainya NULL atau tidak ada baris, hasilnya NULL.
  • Keduanya mengembalikan nilai, bukan seluruh baris — gunakan ORDER BY + LIMIT untuk mengambilnya.

Selanjutnya: apa yang terjadi ketika Anda menggunakan agregat tanpa GROUP BY.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “MIN, MAX, dan Agregasi Non-Numerik” gratis?

Ya — teks lengkap “MIN, MAX, dan Agregasi Non-Numerik” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “MIN, MAX, dan Agregasi Non-Numerik”?

Agregasikan tanggal dan string, serta pahami arti MIN pada teks. Kamu berlatih Coding Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Coding Interview Prep?

Tidak diperlukan pengalaman sebelumnya. Coding Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “MIN, MAX, dan Agregasi Non-Numerik” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Coding Interview Prep ini?

Ya. Setiap pelajaran Coding Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. COUNT(*) vs COUNT(kolom) vs COUNT(DISTINCT)
  2. SUM dan AVG dengan NULL
  3. MIN, MAX, dan Agregasi Non-Numerik
  4. Agregat Tanpa GROUP BY
← Kembali ke Coding Interview Prep