ORDER BY - Sıralama
Artan Sıralama (ASC)
-- Varsayılan artan sıra (ASC yazılmasa da çalışır)
SELECT * FROM products ORDER BY price ASC;
SELECT * FROM products ORDER BY price; -- Aynı sonuç
-- Alfabetik sıralama
SELECT * FROM users ORDER BY name ASC;
Azalan Sıralama (DESC)
-- En yeniden eskiye
SELECT * FROM orders ORDER BY created_at DESC;
-- En pahalıdan ucuza
SELECT * FROM products ORDER BY price DESC;
Çoklu Kolon Sıralama
-- Önce ülkeye, sonra şehre göre sırala
SELECT * FROM customers
ORDER BY country ASC, city ASC;
-- Önce kategoriye göre, sonra fiyata göre (azalan)
SELECT * FROM products
ORDER BY category ASC, price DESC;
category | name | price
-------------+---------+-------
Electronics | Laptop | 15000
Electronics | Tablet | 8000
Electronics | Phone | 5000
Furniture | Desk | 2500
Furniture | Chair | 1500
NULL Değerlerin Sıralaması
-- NULL değerleri sona al
SELECT * FROM users ORDER BY phone NULLS LAST;
-- NULL değerleri başa al
SELECT * FROM users ORDER BY phone NULLS FIRST;
LIMIT ve OFFSET - Sayfalama
Temel LIMIT
-- İlk 10 kayıt
SELECT * FROM users LIMIT 10;
-- En pahalı 5 ürün
SELECT * FROM products ORDER BY price DESC LIMIT 5;
-- En yeni 20 sipariş
SELECT * FROM orders ORDER BY created_at DESC LIMIT 20;
OFFSET ile Sayfalama
-- Sayfa 1 (ilk 10 kayıt)
SELECT * FROM products ORDER BY id LIMIT 10 OFFSET 0;
-- Sayfa 2 (11-20 arası)
SELECT * FROM products ORDER BY id LIMIT 10 OFFSET 10;
-- Sayfa 3 (21-30 arası)
SELECT * FROM products ORDER BY id LIMIT 10 OFFSET 20;
Sayfalama Formülü:
OFFSET = (sayfa_numarası - 1) × sayfa_başına_kayıt
Örnek: 5. sayfa, 20 kayıt → OFFSET = (5-1) × 20 = 80
OFFSET = (sayfa_numarası - 1) × sayfa_başına_kayıt
Örnek: 5. sayfa, 20 kayıt → OFFSET = (5-1) × 20 = 80
Pratik Örnekler
-- En çok satan 10 ürün
SELECT product_id, SUM(quantity) AS total_sold
FROM order_items
GROUP BY product_id
ORDER BY total_sold DESC
LIMIT 10;
-- Son 7 günün siparişleri, en yeniden başlayarak
SELECT * FROM orders
WHERE created_at > NOW() - INTERVAL '7 days'
ORDER BY created_at DESC
LIMIT 50;