MIN, MAX dan Agregasi Bukan Angka
Agregatkan tarikh dan rentetan serta fahami maksud MIN pada teks
MIN, MAX dan Agregasi Bukan Angka ialah pelajaran Persediaan Temu Duga SQL percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Persediaan Temu Duga SQL, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Persediaan Temu Duga SQL merangkumi sejumlah 4 pelajaran.
MIN dan MAX Melangkaui Nombor
Calon menganggap MIN dan MAX hanya berfungsi pada nombor. Penemuduga gemar bertanya: "Apakah yang dikembalikan oleh MAX(nama)? Bagaimana pula dengan MIN(tarikh_pesanan)?"
Sebenarnya, MIN dan MAX berfungsi pada apa-apa jenis yang boleh diisih — nombor, tarikh dan rentetan. Memahami peraturan pengisihan bagi setiap jenis itulah kemahiran sebenar yang sedang diuji.
Kes Berangka
Mari mulakan dengan perkara yang biasa. Pada lajur berangka, MIN mengembalikan nilai paling kecil dan MAX nilai paling besar. Mudah.
Seperti agregat lain, MIN dan MAX mengabaikan NULL. NULL tidak pernah menjadi nilai minimum atau maksimum; ia hanya dilangkau. Jika semua nilai ialah NULL, kedua-duanya mengembalikan NULL.
SELECT MIN(salary) AS lowest, MAX(salary) AS highest
FROM employees;MIN dan MAX pada Tarikh
Tarikh dan cap masa boleh diisih sepenuhnya, jadi MIN(order_date) memberikan tarikh paling awal dan MAX(order_date) memberikan tarikh paling lewat.
Beginilah cara anda menjawab soalan "bilakah pesanan pertama dibuat?" (MIN) dan "apakah aktiviti yang paling terkini?" (MAX) tanpa melakukan pengisihan dan pengehadan. Inilah penyelesaian idiomatik berasaskan set.
SELECT
MIN(order_date) AS first_order,
MAX(order_date) AS latest_order
FROM orders;Julat Tarikh dalam Satu Pertanyaan
Soalan susulan yang biasa ialah: "Sudah berapa lama pelanggan ini aktif?" Gabungkan MIN dan MAX, kemudian lakukan penolakan.
Ini mengira tempoh antara pesanan pertama dan terakhir. Sintaks penolakan yang tepat berbeza mengikut dialek, tetapi idea MIN/MAX adalah universal dan menunjukkan bahawa anda boleh menyatakan julat 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 Rentetan
Inilah bahagian yang mengejutkan ramai orang. Pada lajur teks, MIN dan MAX menggunakan susunan leksikografi (mengikut abjad) berdasarkan kolasi lajur.
Jadi MIN(name) mengembalikan nama yang berada di tempat pertama mengikut abjad, manakala MAX(name) mengembalikan nama yang berada di tempat terakhir. MIN terhadap {'Carol', 'Alice', 'Bob'} mengembalikan 'Alice'; MAX mengembalikan '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
Susunan rentetan bergantung pada kolasi, yang mengawal kepekaan huruf besar-kecil dan peraturan setempat. Dalam banyak kolasi lalai, huruf besar boleh berada sebelum huruf kecil, jadi MAX bagi {'apple', 'Banana'} mungkin mengejutkan anda.
Dalam temu duga, nyatakan bahawa hasil MIN/MAX rentetan bergantung pada kolasi. Nuansa ini membezakan jawapan yang dihafal daripada pemahaman sebenar.
Apakah yang NOT Dimaksudkan oleh MIN(teks)
Salah faham yang kerap berlaku ialah MIN(name) mengembalikan rentetan yang paling pendek atau MAX(name) mengembalikan rentetan yang paling panjang. Ia tidak berbuat demikian. Ia semata-mata berkaitan dengan susunan pengisihan, bukan panjang.
Jika anda benar-benar memerlukan rentetan yang paling panjang, susun mengikut LENGTH(name) dan pilih baris teratas, atau gunakan MAX(LENGTH(name)) untuk mendapatkan panjang sahaja. Jangan kelirukan susunan nilai dengan panjang.
SELECT MAX(LENGTH(name)) AS longest_name_length
FROM employees;MIN/MAX Tidak Menggabungkan Lajur
Perangkap penting: MIN dan MAX beroperasi pada satu lajur secara berasingan. Ia tidak mengembalikan keseluruhan baris yang mengandungi nilai minimum atau maksimum.
Jika anda menulis SELECT MIN(salary), name tanpa pengelompokan, anda tidak mendapat nama pekerja bergaji paling rendah — anda mendapat ralat atau nama sewenang-wenangnya, bergantung pada dialek. Untuk mendapatkan keseluruhan baris, gunakan ORDER BY + LIMIT atau fungsi tetingkap.
-- 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;Imbas Kembali Tingkah Laku NULL untuk MIN/MAX
Sama seperti SUM dan AVG, MIN dan MAX mengabaikan NULL. NULL bukan nilai yang paling kecil atau paling besar.
- Nilai bercampur + NULL: NULL diabaikan, nilai minimum/maksimum sebenar dikembalikan.
- Semua NULL atau tiada baris: MIN dan MAX mengembalikan NULL.
Konsistensi ini merentas fungsi agregat merupakan perkara yang baik untuk dinyatakan: "Semua fungsi agregat standard mengabaikan NULL."
Menggunakannya dalam Kumpulan
MIN dan MAX sangat berguna dengan GROUP BY untuk mendapatkan nilai ekstrem bagi setiap kumpulan. "Gaji tertinggi bagi setiap jabatan" ialah contoh yang lazim.
Ini mengembalikan satu baris bagi setiap jabatan dengan gaji tertinggi jabatan tersebut. Ingat: ia memberikan nilai, bukan pekerja. Memadankan nama dengannya ialah masalah susulan yang berasingan dan biasa.
SELECT department, MAX(salary) AS top_salary
FROM employees
GROUP BY department;Cara Menjawab dengan Yakin
Jawapan temu duga yang baik: "MIN dan MAX berfungsi pada apa-apa jenis yang boleh diisih. Bagi nombor, nilainya paling kecil atau paling besar; bagi tarikh, paling awal atau paling lewat; bagi rentetan, susunannya mengikut abjad berdasarkan kolasi lajur. Ia mengabaikan NULL dan hanya mengembalikan NULL apabila tiada nilai bukan NULL wujud. Ia mengembalikan satu nilai, bukan keseluruhan baris, jadi untuk mendapatkan baris itu saya akan menggunakan ORDER BY dengan LIMIT atau fungsi tetingkap."
Semakan Pantas
Buat penaakulan tentang pengagregatan rentetan.
Imbas Kembali
Semua tentang MIN dan MAX:
- Berfungsi pada apa-apa jenis yang boleh diisih: nombor, tarikh dan rentetan.
- Rentetan menggunakan susunan mengikut abjad/kolasi, bukan panjang.
- Tarikh: MIN = paling awal, MAX = paling lewat.
- Ia mengabaikan NULL; jika semuanya NULL atau tiada baris, NULL dikembalikan.
- Ia mengembalikan nilai, bukan keseluruhan baris — gunakan ORDER BY + LIMIT untuk mendapatkannya.
Seterusnya: perkara yang berlaku apabila anda menggunakan fungsi agregat tanpa GROUP BY.
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “MIN, MAX dan Agregasi Bukan Angka” percuma?
Ya — teks penuh “MIN, MAX dan Agregasi Bukan Angka” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Persediaan Temu Duga SQL, tingkat taraf kepada CoddyKit PRO. Kursus Persediaan Temu Duga SQL merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “MIN, MAX dan Agregasi Bukan Angka”?
Agregatkan tarikh dan rentetan serta fahami maksud MIN pada teks Anda berlatih Persediaan Temu Duga SQL menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Persediaan Temu Duga SQL?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Persediaan Temu Duga SQL di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “MIN, MAX dan Agregasi Bukan Angka” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Persediaan Temu Duga SQL ini?
Ya. Setiap pelajaran Persediaan Temu Duga SQL menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- COUNT(*) berbanding COUNT(lajur) berbanding COUNT(DISTINCT)
- SUM dan AVG dengan NULL
- MIN, MAX dan Agregasi Bukan Angka
- Agregat Tanpa GROUP BY