SQL GROUP BY ve ORDER BY Kullanımı
Bu rehberde SQL sorgularında verileri gruplama ve sonuçları sıralama mantığını öğreneceksiniz.
GROUP BY, ORDER BY, WHERE ve HAVING ifadelerinin doğru kullanımını netleştireceksiniz.
Teknik Özet
Ana konu: SQL’de GROUP BY ve ORDER BY
Amaç: Büyük veri setlerini özetlemek ve düzenlemek
Adımlar: Örnek tablo → GROUP BY → ORDER BY → Birlikte kullanım
Ön Gereksinimler
- MySQL 8.x veya PostgreSQL
- Çalışan bir SQL veritabanı
- Temel SELECT bilgisi
Örnek Veri Seti
CREATE TABLE movie_theater (
theater_id INT PRIMARY KEY,
date DATE,
time TIME,
movie_name VARCHAR(40),
movie_genre VARCHAR(30),
guest_total INT,
ticket_cost DECIMAL(4,2)
);
- Bu tablo sinema gösterim verilerini saklar.
GROUP BY Nedir?
- GROUP BY, aynı değerlere sahip satırları gruplar. Genellikle toplama fonksiyonlarıyla birlikte kullanılır.
SELECT movie_genre, AVG(guest_total) AS ortalama
FROM movie_theater
GROUP BY movie_genre;
- Bu sorgu türlere göre ortalama izleyici sayısını hesaplar.
GROUP BY ile COUNT Kullanımı
SELECT movie_name, COUNT(*) AS gosterim_sayisi
FROM movie_theater
GROUP BY movie_name;
- Bu sorgu her filmin kaç kez gösterildiğini döndürür.
GROUP BY ile SUM Kullanımı
SELECT date, SUM(guest_total * ticket_cost) AS toplam_gelir
FROM movie_theater
GROUP BY date;
- Bu sorgu gün bazlı toplam bilet gelirini hesaplar.
WHERE ve HAVING Arasındaki Fark
WHERE → Gruplama öncesi filtreleme yapar
HAVING → Gruplama sonrası filtreleme yapar
SELECT movie_genre, AVG(guest_total) AS ortalama
FROM movie_theater
GROUP BY movie_genre
HAVING AVG(guest_total) > 100;
- Bu sorgu ortalaması 100’den büyük türleri listeler.
DISTINCT ve GROUP BY Karşılaştırması
SELECT DISTINCT movie_name FROM movie_theater;
- Bu sorgu benzersiz film adlarını getirir.
SELECT movie_name FROM movie_theater GROUP BY movie_name;
- Bu sorgu aynı sonucu GROUP BY ile üretir.
➡️ Toplama yoksa DISTINCT, analiz varsa GROUP BY tercih edilir.
ORDER BY Nedir?
- ORDER BY, sorgu sonuçlarını artan veya azalan şekilde sıralar.
SELECT guest_total
FROM movie_theater
ORDER BY guest_total;
- Bu sorgu izleyici sayılarını küçükten büyüğe sıralar.
ORDER BY DESC Kullanımı
SELECT movie_name
FROM movie_theater
ORDER BY movie_name DESC;
- Bu sorgu film adlarını Z’den A’ya sıralar.
GROUP BY ve ORDER BY Birlikte Kullanımı
SELECT movie_name,
SUM(guest_total * ticket_cost) AS toplam_gelir
FROM movie_theater
GROUP BY movie_name
ORDER BY toplam_gelir DESC;
- Bu sorgu filmleri toplam gelirine göre sıralar.
Gerçek Hayat BI Örneği
SELECT movie_genre,
SUM(guest_total * ticket_cost) AS gelir
FROM movie_theater
WHERE time BETWEEN '17:00:00' AND '23:00:00'
GROUP BY movie_genre
HAVING SUM(guest_total) > 150
ORDER BY gelir DESC
LIMIT 5;
- Bu sorgu akşam seanslarında en çok kazandıran türleri bulur.
Sıkça Sorulan Sorular (SSS)
1. GROUP BY olmadan SUM kullanılır mı? Hayır. Gruplama gerekir.
2. ORDER BY varsayılan sıralama nedir? Artan (ASC).
3. HAVING yerine WHERE kullanılır mı? Hayır. HAVING gruplar içindir.
4. GROUP BY sıralama yapar mı? Hayır. Sıralama ORDER BY ile yapılır.
5. ORDER BY nerede yazılmalıdır? SQL sorgusunun en sonunda yer alır.
Yaygın Hatalar
❌ GROUP BY dışındaki kolonları SELECT’e eklemek ❌ HAVING yerine WHERE kullanmak ❌ ORDER BY’i yanlış sırada yazmak
-- Yanlış kullanım
SELECT movie_genre, movie_name, AVG(guest_total)
FROM movie_theater
GROUP BY movie_genre;
Sonuç
Bu rehberle SQL’de veri gruplama ve sıralama mantığını net şekilde öğrendiniz. GROUP BY analiz yapar, ORDER BY sonuçları düzenler.
🚀 Rabisu Bulut altyapısında yüksek performanslı veritabanlarıyla bu sorguları güvenle çalıştırabilirsiniz.