SQL · DERS 04

GROUP BY ve toplama

Her şehir için bir satır döndüren bir satış özeti hazırla.

1. Bir sonuç satırı neyi temsil ediyor?

Sipariş tablosunda her satır bir sipariş. GROUP BY city aynı şehirdeki siparişleri bir araya getirir ve sonuçta her şehir için bir satır oluşur. COUNT(*) siparişleri sayar, SUM(amount) tutarları toplar.

SELECT city, COUNT(*) AS order_count, SUM(amount) AS total_amount
FROM orders
GROUP BY city;

Örnek veride Adıyaman’da 120 ve 50 TL, Ankara’da 80 TL, İzmir’de 150 TL tutarında sipariş var. Adıyaman’ın özeti 2 sipariş ve 170 TL.

2. Önce satırları mı, grupları mı eleyeceksin?

WHERE amount >= 80 toplama yapılmadan önce 50 TL’lik siparişi eler. HAVING SUM(amount) >= 150 ise önce her şehrin toplamını hesaplar, sonra toplamı 150 TL’nin altında kalan şehirleri eler.

Çıktıyı tahmin et ve kontrol et

İlk koşulla Adıyaman 1 sipariş ve 120 TL gösterir. İkinci koşulla Adıyaman 2 sipariş ve 170 TL gösterir, Ankara sonuçtan çıkar.

3. Laboratuvarda dene

Başlangıç sorgusu tüm tabloyu tek grup olarak özetliyor. Sorguyu her şehir için ayrı bir sonuç satırı döndürecek şekilde düzelt.

Laboratuvarı aç →

Junior veri analisti mülakat sorusu

Bazı siparişlerin tutarı eksik. COUNT(*) ve COUNT(amount) neden farklı sonuç verebilir?

Örnek yanıt

COUNT(*) tüm sipariş satırlarını sayar. COUNT(amount) yalnızca tutarı NULL olmayan satırları sayar. İkisini birlikte kullanarak kaç siparişin tutarının eksik olduğunu bulabilirim.

← Önceki ders · Sıradaki ders · JOIN →