SQL · DERS 02
WHERE ile filtreleme
Rapora yalnızca 80 TL ve üzeri siparişleri alacaksın. SELECT sonuçta hangi sütunların görüneceğini, WHERE hangi satırların kalacağını belirler.
1. Sipariş tablosundan satır seç
| order_id | city | amount |
|---|---|---|
| A1 | Adıyaman | 120 |
| A2 | Ankara | 80 |
| A3 | Adıyaman | 50 |
SELECT order_id, amount
FROM orders
WHERE amount >= 80;
Koşulu sağlayan A1 ve A2 kalır. Tam 80 TL olan A2, eşitliğe izin verdiğimiz için dahil edilir.
2. Çıktıyı tahmin et
>= 80 yerine > 80 yazarsan hangi sipariş sonuçtan çıkar?
İpucu al
Eşiğe tam eşit olan satırı bul.
Çözümü göster
A2 çıkar. Yalnızca 120 TL tutarındaki A1 kalır.
3. Parantez hatasını bul
Adıyaman ve Ankara siparişlerinden yalnızca 80 TL ve üzerindekiler isteniyor. Aşağıdaki sorgu neden 50 TL’lik A3’ü de getiriyor?
SELECT order_id, city, amount
FROM orders
WHERE city = 'Adıyaman' OR city = 'Ankara' AND amount >= 80;
İpucu al
AND, OR’dan önce değerlendirilir. Tutar koşulu hangi şehre uygulanıyor?
Çözümü göster
İlk sorgu Adıyaman’daki her siparişi kabul eder. İki şehri parantez içine alırsan tutar koşulu ikisine de uygulanır. Sonuçta A1 ve A2 kalır.
SELECT order_id, city, amount
FROM orders
WHERE (city = 'Adıyaman' OR city = 'Ankara')
AND amount >= 80;Junior veri analisti mülakat sorusu
Bir kampanya iki şehirdeki 80 TL ve üzeri siparişleri kapsıyor. Filtrenin doğru çalıştığını nasıl test edersin?
Örnek yanıt
Her iki şehirde de 79, 80 ve 81 TL’lik kayıtları kontrol ederim. 79 hariç, 80 ve 81 dahil olmalı. Ayrıca kampanya dışı bir şehirden 100 TL’lik sipariş ekler, onun da hariç kaldığını doğrularım.