SQL'de WITH TIES seçeneği, ORDER BY ile birlikte ve satır sayısını sınırlayan yapı (TOP veya FETCH FIRST ... ROWS ONLY) ile kullanılır. Bu, yalnızca kesinlikle N ilk satırı değil, aynı zamanda sıralama alanındaki değeri son (N'inci) satırla eşleşen tüm satırları döndürür.
Ne zaman gerekli: Analiz, sıralama, lider tablosu gibi durumlarda, "beraberlik" veya aynı puana sahip grupların dahil edilmesinin önemli olduğu durumlarda.
Örnek (SQL Server):
SELECT TOP 3 WITH TIES * FROM Sales ORDER BY Amount DESC;
Eğer 3. ve 4. sırada aynı satış tutarına sahip satırlar varsa, her iki satır da dönecektir.
PostgreSQL'de:
SELECT * FROM Sales ORDER BY Amount DESC FETCH FIRST 3 ROWS WITH TIES;
Önemli: Sadece ORDER BY ile çalışır, aksi takdirde sonuç tahmin edilemez.
Sadece
TOP N/LIMITkullanımı ileWITH TIESkullanımı arasındaki fark nedir?
Sık yapılan yanlış cevap: "WITH TIES sadece satırları sınırlar, bu bir eşanlamlıdır".
Doğru cevap:
TOP N/LIMIT — tam olarak N satırı döndürür, aynı sıralama değerine sahip olan sonraki satırları dikkate almaz.WITH TIES — en son (N'inci) satırla eşleşen sıralama alanına sahip tüm satırları ekler.Örnek:
-- En iyi 2 sonucu seç, ama eğer "beraberlik" varsa — onları da al: SELECT TOP 2 WITH TIES Name, Score FROM Results ORDER BY Score DESC;
Hikaye
Proje: Öğrenci sıralama yarışması. Hata: Sadece
LIMIT 3kullandılar ve aynı puana sahip birçok öğrenci kazananlar listesinin dışına çıktı — gerçek ödül alanları yanlışlıkla "kesildi".
Hikaye
Proje: E-ticaret analitiği. Hata: En popüler 5 ürünü göstermek istediler, fakat satışlarla aynı SKU'ya sahip olanlar arasında sadece ilk 5'i gösterdiler ve daha sonra denetimde bazı hitlerin rapora girmediğini fark ettiler.
Hikaye
Proje: Şubelerin satış raporlaması. Hata: Müşteri eşit sonuçta tüm liderleri görmek bekliyordu, ancak geliştirici
WITH TIEShakkında bilgi sahibi değildi — bu yüzden sonuçlar yanlış oldu, müşteri veri kalitesine itirazda bulundu.