Birden Çok Sütun ve İfadeye Göre Gruplama
Bileşik gruplama anahtarlarını ve hesaplanan değerlere göre gruplamayı öğrenin.
Birden Çok Sütun ve İfadeye Göre Gruplama, 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.
Tek Bir Gruplama Anahtarının Ötesinde
Gerçek raporlar nadiren tek bir sütuna göre gruplandırılır. Mülakat yapanlar, gruplama anahtarlarını birleştirme anlayışınızı görmek için 'bölge başına satış' sorusundan 'ay ve bölge başına satış' sorusuna geçer.
Kural kolayca genişler: GROUP BY içinde daha fazla sütun listelemek, bu sütunların her farklı birleşimi için bir satır oluşturur.
Birden Fazla Sütun Ne Anlama Gelir?
GROUP BY region, product yazdığınızda grup anahtarı (region, product) çiftidir. Her benzersiz çift bir çıktı satırına dönüşür.
- 5 bölge ve 4 ürün, en fazla 20 grup oluşturur.
- Hiç oluşmayan birleşimler hiçbir satır üretmez.
- GROUP BY içindeki sütunların sırası sonuç kümesini değiştirmez; yalnızca bazen planı değiştirir.
SELECT region, product, SUM(amount) AS total
FROM sales
GROUP BY region, product;SELECT Kuralına Yine Uyun
Temel kısıtlama gevşemez. Toplulaştırılmamış her SELECT sütunu GROUP BY içinde yer almalıdır. Birleşik anahtarlarla yalnızca hepsini listelemeniz gerekir.
Çok anahtarlı bir grupta bir sütunu unutmak, mülakat baskısı altında yapılan en yaygın hatadır. GROUP BY listesini toplulaştırılmamış SELECT sütunlarıyla eksiksiz eşleştirin.
-- Both region and product appear in GROUP BY
SELECT region, product,
COUNT(*) AS orders,
AVG(amount) AS avg_amount
FROM sales
GROUP BY region, product;Bir İfadeye Göre Gruplama
Yalnızca ham bir sütuna göre değil, hesaplanmış bir değere göre de gruplama yapabilirsiniz. Sık karşılaşılan bir istek, satışları aya göre gruplamaktır; bu da kesilmiş veya ayıklanmış bir tarihe göre gruplama anlamına gelir.
GROUP BY içindeki ifade, SELECT içindeki ifadeyle eşleşmelidir. Motor, hesaplanan sonuca göre gruplama yapar.
SELECT DATE_TRUNC('month', order_date) AS month,
SUM(amount) AS monthly_total
FROM sales
GROUP BY DATE_TRUNC('month', order_date);CASE Kovalarıyla Gruplama
Güçlü bir yaklaşım, özel aralıklar oluşturmak için bir CASE ifadesine göre gruplama yapmaktır. Arama tablosu kullanmadan 'küçük / orta / büyük sipariş' özetleri bu şekilde oluşturulur.
Mülakat yapanlar bunu sever; çünkü aynı anda hem CASE mantığını hem de türetilmiş bir değere göre gruplamayı sınar.
SELECT CASE
WHEN amount < 50 THEN 'small'
WHEN amount < 200 THEN 'medium'
ELSE 'large'
END AS bucket,
COUNT(*) AS orders
FROM sales
GROUP BY CASE
WHEN amount < 50 THEN 'small'
WHEN amount < 200 THEN 'medium'
ELSE 'large'
END;Sütun Konumuna Göre Gruplama
Birçok lehçe sıra konumuna göre gruplama yapmanıza izin verir: GROUP BY 1, 2, ilk ve ikinci SELECT sütunları anlamına gelir. Kısa ama kırılgan bir kullanımdır.
Mülakat yapanlar bunu kabul edebilir, ancak riski belirtin: SELECT listesinin yeniden sıralanması gruplamayı sessizce değiştirir. Üretim kodunda açık ifadeleri tercih edin.
-- 1 = month expression, 2 = region
SELECT DATE_TRUNC('month', order_date) AS month,
region, SUM(amount)
FROM sales
GROUP BY 1, 2;NULL Değerleri Kendi Gruplarını Oluşturur
Gruplama içindeki bir NULL işleme tuzağı şudur: bir gruplama sütunu NULL değerleri içerdiğinde, NULL içeren tüm satırlar tek bir grupta birleşir.
Bu durum, NULL değerinin hiçbir zaman NULL değerine eşit olmadığı eşitlik karşılaştırmalarından farklıdır. Gruplama amacıyla NULL değerleri 'aynı' kabul edilir ve tek bir aralık oluşturur. Mülakat yapanlar bu görünür çelişkiyi çok sever.
-- Rows with region IS NULL all land in one group
SELECT region, COUNT(*) AS orders
FROM sales
GROUP BY region;Birden Fazla Düzey İçin GROUPING SETS
Tek bir sorguda birden çok gruplama ayrıntı düzeyi üretmek için GROUPING SETS kullanın. Listelenen her anahtar kümesini hesaplar ve sonuçları birleştirir.
Bu, orta ile üst düzey arasındaki yetkinliği gösterir: üç ayrı sorgu ve UNION yerine tek bir ifade bölge, ürün ve genel toplamları birlikte döndürür.
SELECT region, product, SUM(amount) AS total
FROM sales
GROUP BY GROUPING SETS ((region), (product), ());ROLLUP ve CUBE
ROLLUP ve CUBE, yaygın gruplama kümeleri için kısa gösterimlerdir. ROLLUP(region, product); bölge+ürün toplamlarını, bölge ara toplamlarını ve genel toplamı verir. Bu, hiyerarşik raporlar için idealdir.
CUBE, listelenen sütunların her birleşimini oluşturur. Bunları bilmek, gerçek raporlama sorguları yazmış bir adayı ayırt eder.
SELECT region, product, SUM(amount) AS total
FROM sales
GROUP BY ROLLUP (region, product);Uygulamalı Örnek: Aylık Bölge Raporu
Fikirleri birleştirin: yalnızca tamamlanmış siparişler için bölge ve ay başına toplam ve ortalama satışları bulun, ardından okunabilirlik için sıralayın.
WHERE önce satırları daraltır, birleşik anahtar bölge ve ay ifadesine göre gruplar, ORDER BY ise çıktıyı düzenler. Bu, analist mülakatlarında verilen tipik kapsamlı bir yanıttır.
SELECT region,
DATE_TRUNC('month', order_date) AS month,
SUM(amount) AS total,
AVG(amount) AS avg_order
FROM sales
WHERE status = 'completed'
GROUP BY region, DATE_TRUNC('month', order_date)
ORDER BY region, month;Düşünme Sürecinizi Sesli İfade Etme
Birleşik gruplamayla ilgili her soruda anahtarı açıkça belirtin: 'X ve Y'nin birleşimine göre gruplama yapıyorum; bu nedenle her farklı (X, Y) çifti için bir satır elde ediyorum.'
Ardından toplulaştırılmamış her SELECT sütununun bu anahtarda yer aldığını doğrulayın ve NULL değerlerinin tek bir grupta birleştiğini belirtin. Orta düzey mülakatlarda ödüllendirilen, bu yöntemli açıklamadır.
Hızlı Kontrol
Birleşik gruplama anahtarları üzerine düşünün.
Özet
Birleşik anahtarlar: birden fazla sütun listelemek, her farklı birleşim için bir satır oluşturur; toplulaştırılmamış her SELECT sütunu anahtarda yer almalıdır.
- İfadelere, CASE kovalarına veya sıra konumlarına göre gruplama yapabilirsiniz; konumlar kırılgandır.
- Bir gruplama sütunundaki NULL değerleri tek bir grupta birleşir.
GROUPING SETS,ROLLUPveCUBE, tek bir sorguda birden çok gruplama düzeyi üretir.- Satır filtrelerini gruplamadan önce WHERE içine taşıyın.
Sıkça Sorulan Sorular
“Birden Çok Sütun ve İfadeye Göre Gruplama” dersi ücretsiz mi?
Evet — “Birden Çok Sütun ve İfadeye Göre Gruplama” 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.
“Birden Çok Sütun ve İfadeye Göre Gruplama” dersinde ne öğreneceğim?
Bileşik gruplama anahtarlarını ve hesaplanan değerlere göre gruplamayı öğ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.
“Birden Çok Sütun ve İfadeye Göre Gruplama” 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
- SELECT Sütunları için GROUP BY Kuralı
- HAVING ve WHERE Karşılaştırması
- Birden Çok Sütun ve İfadeye Göre Gruplama
- Grupları Sayma ve Filtreleme