MIN, MAX ve Sayısal Olmayan Toplulaştırma
Tarihleri ve dizeleri toplulaştırmayı, metin üzerindeki MIN'in anlamını öğrenin.
MIN, MAX ve Sayısal Olmayan Toplulaştırma, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.
Sayıların Ötesinde MIN ve MAX
Adaylar MIN ve MAX işlemlerinin yalnızca sayılarla çalıştığını varsayar. Mülakatçılar şu soruyu sormayı sever: "MAX(name) ne döndürür? Peki MIN(order_date) için ne dersiniz?"
Gerçek şudur: MIN ve MAX sıralanabilir her tür üzerinde çalışır — sayılar, tarihler ve dizeler. Her türün sıralama kurallarını anlamak, burada gerçekten sınanan beceridir.
Sayısal Durum
Alışıldık olandan başlayınız. Sayısal sütunlarda MIN en küçük değeri, MAX ise en büyük değeri döndürür. Hepsi bu kadar basit.
Diğer toplama işlevleri gibi MIN ve MAX de NULL değerlerini yok sayar. NULL hiçbir zaman en küçük veya en büyük değer değildir; basitçe atlanır. Her değer NULL ise ikisi de NULL döndürür.
SELECT MIN(salary) AS lowest, MAX(salary) AS highest
FROM employees;Tarihlerde MIN ve MAX
Tarihler ve zaman damgaları tamamen sıralanabilir olduğundan, MIN(order_date) en erken tarihi, MAX(order_date) ise en geç tarihi verir.
Bu sayede sıralama ve sınırlandırma yapmadan "ilk sipariş ne zaman verildi?" (MIN) ve "en son etkinlik ne zaman gerçekleşti?" (MAX) sorularını yanıtlayabilirsiniz. Bu, deyimsel ve küme tabanlı çözümdür.
SELECT
MIN(order_date) AS first_order,
MAX(order_date) AS latest_order
FROM orders;Tek Sorguda Tarih Aralığı
Sık karşılaşılan bir devam sorusu şudur: "Bu müşteri ne kadar süredir etkin?" MIN ve MAX değerlerini birleştirip ardından birbirinden çıkarın.
Bu işlem, ilk ve son sipariş arasındaki süreyi hesaplar. Kesin çıkarma söz dizimi lehçeye göre değişir; ancak MIN/MAX fikri evrenseldir ve aralıkları bildirimsel olarak ifade edebildiğinizi gösterir.
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;Dizelerde MIN ve MAX
İnsanları şaşırtan kısım şudur: Metin sütunlarında MIN ve MAX, sütunun karşılaştırma düzenine göre sözlükbilimsel (alfabetik) sıralamayı kullanır.
Bu nedenle MIN(name), alfabetik olarak ilk sırada yer alan adı; MAX(name) ise son sırada yer alan adı döndürür. {'Carol', 'Alice', 'Bob'} kümesi üzerinde MIN 'Alice' döndürür; MAX ise 'Carol' döndürür.
SELECT MIN(name) AS first_alpha, MAX(name) AS last_alpha
FROM employees;
-- with Alice, Bob, Carol: 'Alice' and 'Carol'Karşılaştırma Düzeni ve Büyük-Küçük Harf Duyarlılığı
Dize sıralaması, büyük-küçük harf duyarlılığını ve yerel ayar kurallarını belirleyen karşılaştırma düzenine bağlıdır. Birçok varsayılan karşılaştırma düzeninde büyük harfler küçük harflerden önce sıralanabilir; bu nedenle {'apple', 'Banana'} kümesi üzerinde MAX sonucu sizi şaşırtabilir.
Bir mülakatta, dize MIN/MAX sonuçlarının karşılaştırma düzenine bağlı olduğunu belirtin. Bu ayrıntı, ezberlenmiş bir yanıtı gerçek kavrayıştan ayırır.
MIN(text) Ne Anlama GELMEZ
Sık rastlanan bir yanlış anlama, MIN(name) değerinin en kısa dizeyi, MAX(name) değerinin ise en uzun dizeyi döndürdüğünü sanmaktır. Bu doğru değildir. İşlem tamamen sıralama düzeniyle ilgilidir; uzunlukla değil.
Gerçekten en uzun dizeye ihtiyacınız varsa LENGTH(name) değerine göre sıralayıp ilk satırı seçin veya yalnızca uzunluğu elde etmek için MAX(LENGTH(name)) kullanın. Değer sıralamasıyla uzunluğu karıştırmayın.
SELECT MAX(LENGTH(name)) AS longest_name_length
FROM employees;MIN/MAX Sütunları Birleştirmez
Önemli bir tuzak şudur: MIN ve MAX tek bir sütun üzerinde bağımsız olarak çalışır. En küçük veya en büyük değeri içeren satırın tamamını döndürmezler.
Gruplama yapmadan SELECT MIN(salary), name yazarsanız en düşük maaşlı kişinin adını elde etmezsiniz; lehçeye bağlı olarak bir hata veya rastgele bir ad alırsınız. Satırın tamamını getirmek için ORDER BY + LIMIT ya da pencere işlevi kullanın.
-- 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;MIN/MAX için NULL Davranışının Özeti
SUM ve AVG gibi, MIN ve MAX de NULL değerlerini atlar. Bir NULL ne en küçük ne de en büyük değerdir.
- Karışık değerler + NULL değerleri: NULL değerleri yok sayılır, gerçek minimum/maksimum döndürülür.
- Tüm değerler NULL olduğunda veya hiç satır olmadığında: MIN ve MAX NULL döndürür.
Toplama işlevleri arasındaki bu tutarlılık, şu ifadeyi kullanmak için iyi bir noktadır: "Standart toplama işlevlerinin tümü NULL değerlerini yok sayar."
Bir Gruba Uygulama
MIN ve MAX, grup başına uç değerleri bulmak için GROUP BY ile birlikte çok etkilidir. "Departman başına en yüksek maaş" klasik bir örnektir.
Bu işlem, her departman için o departmanın en yüksek maaşını içeren bir satır döndürür. Unutmayın: İşlem değeri verir, çalışanı değil. Adı bu değerle eşleştirmek ayrı ve sık karşılaşılan bir devam problemidir.
SELECT department, MAX(salary) AS top_salary
FROM employees
GROUP BY department;Kendinizden Emin Bir Yanıt Verme
Güçlü bir mülakat yanıtı şöyledir: "MIN ve MAX, sıralanabilir her tür üzerinde çalışır. Sayılarda en küçük/en büyük, tarihlerde en erken/en geç, dizelerde ise sütunun karşılaştırma düzenine göre alfabetik sonuç verir. NULL değerlerini yok sayar ve yalnızca NULL olmayan hiçbir değer bulunmadığında NULL döndürürler. Tek bir değer döndürürler, satırın tamamını değil; bu nedenle satırı getirmek için LIMIT ile birlikte ORDER BY veya bir pencere işlevi kullanırım."
Kısa Kontrol
Dize toplamasını düşünün.
Özet
MIN ve MAX hakkında bilmeniz gereken her şey:
- Her türlü sıralanabilir tür üzerinde çalışırlar: sayılar, tarihler, dizeler.
- Dizelerde uzunluk yerine alfabetik/karşılaştırma düzeni sıralaması kullanılır.
- Tarihlerde: MIN = en erken, MAX = en geç.
- NULL değerlerini yok sayarlar; tüm değerler NULL olduğunda veya hiç satır olmadığında NULL döndürürler.
- Bir değer döndürürler, satırın tamamını değil — satırın tamamı için ORDER BY + LIMIT kullanın.
Sırada: GROUP BY olmadan toplama işlevlerini kullandığınızda ne olur?
Sıkça Sorulan Sorular
“MIN, MAX ve Sayısal Olmayan Toplulaştırma” dersi ücretsiz mi?
Evet — “MIN, MAX ve Sayısal Olmayan Toplulaştırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.
“MIN, MAX ve Sayısal Olmayan Toplulaştırma” dersinde ne öğreneceğim?
Tarihleri ve dizeleri toplulaştırmayı, metin üzerindeki MIN'in anlamını öğrenin. SQL Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Interview Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“MIN, MAX ve Sayısal Olmayan Toplulaştırma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Interview Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- COUNT(*) ile COUNT(sütun) ve COUNT(DISTINCT) Karşılaştırması
- NULL Değerlerle SUM ve AVG
- MIN, MAX ve Sayısal Olmayan Toplulaştırma
- GROUP BY Olmadan Toplulaştırma