- Yöntemler her zaman bir Over() yan tümcesi ile çalışır.
- Kronolojik sırayla, her satıra bir derece verirler.
- ORDER BY'a bağlı olarak, işlevler her satıra bir derece tahsis eder.
- Satırlar, her yeni bölüm için bir taneden başlayarak, her zaman kendilerine ayrılmış bir sıraya sahip görünüyor.
Toplamda, aşağıdaki gibi üç tür sıralama işlevi vardır:
- rütbe
- Yoğun Sıra
- Yüzde Sıralaması
MySQL SIRALAMA():
Bu, bir bölüm veya sonuç dizisi içinde bir derece veren bir yöntemdir ile boşluklar satır başına. Kronolojik olarak, sıraların sıralaması her zaman tahsis edilmez (i.e., önceki satırdan bir artırıldı). Birkaç değer arasında bir bağınız olsa bile, bu noktada rank() yardımcı programı ona aynı sıralamayı uygular. Ayrıca, önceki sıra artı tekrarlanan sayıların bir rakamı sonraki sıra numarası olabilir.
Sıralamayı anlamak için komut satırı istemci kabuğunu açın ve kullanmaya başlamak için MySQL şifrenizi yazın.
Bazı kayıtlarla birlikte “veri” veritabanında “same” adında bir aşağıdaki tablomuz olduğunu varsayalım.
>> verilerden * SEÇ.aynı;
Örnek 01: Basit RANK()
Aşağıda, SELECT komutunda Rank fonksiyonunu kullanıyoruz. Bu sorgu “aynı” tablosundan “id” sütununu seçer ve “id” sütununa göre sıralar. Gördüğünüz gibi, sıralama sütununa “my_rank” olan bir isim verdik. Sıralama şimdi aşağıda gösterildiği gibi bu sütunda saklanacaktır.
>> SELECT id, RANK() OVER( SİPARİŞ TARAFINDAN ) my_rank FROM FROM.aynı;
Örnek 02: RANK() PARTITION kullanarak
Aşağıdaki kayıtlarla bir veritabanı “veri”sinde başka bir “çalışan” tablosu olduğunu varsayalım. Sonuç kümesini bölümlere ayıran başka bir örneğimiz olsun.
>> verilerden * SEÇİN.çalışan;
RANK() yöntemini kullanmak için, sonraki talimat her satıra sıralama atar ve sonuç kümesini "Yaş" kullanarak bölümlere ayırır ve bunları "Maaş"a göre sıralar. Bu sorgu, "new_rank" sütununda sıralama yaparken tüm kayıtları getiriyor. Bu sorgunun çıktısını aşağıda görebilirsiniz. Tabloyu “Maaş”a göre sıralamış ve “Yaş”a göre ayırmıştır.
>> SELECT *, RANK() OVER(YAŞA GÖRE BÖLÜM SİPARİŞE GÖRE) new_rank FROM data.çalışan;
MySQL DENSE_Rank():
Bu, bir işlevsellik, deliksiz, bir bölüm veya sonuç kümesi içindeki her satır için bir sıralama belirler. Satırların sıralaması çoğunlukla sıralı olarak tahsis edilir. Zaman zaman, değerler arasında bir bağınız olur ve bu nedenle, yoğun sıra tarafından tam sıraya atanır ve sonraki sıra, bir sonraki başarılı sayıdır.
Örnek 01: Basit DENSE_RANK()
Diyelim ki bir “çalışan” tablomuz var ve “Ad” ve “Maaş” tablo sütunlarını “Ad” sütununa göre sıralamanız gerekiyor. İçinde kayıtların derecesini saklamak için yeni bir “dens_Rank” sütunu oluşturduk. Aşağıdaki sorguyu yürüttüğümüzde, tüm değerlere farklı sıralama ile aşağıdaki sonuçları elde ederiz.
>> SEÇ İsim, Maaş, DENSE_RANK() OVER( SİPARİŞ AD ) dens_rank FROM data.çalışan;
Örnek 02: DENSE_RANK() PARTITION kullanarak
Sonuç kümesini bölümlere ayıran başka bir örnek görelim. Aşağıdaki sözdizimine göre, PARTITION BY ifadesi tarafından bölümlenen sonuçtaki küme FROM ifadesi tarafından döndürülür ve ardından DENSE_RANK() yöntemi "Ad" sütunu kullanılarak her bölüme bulaşır. Ardından, her segment için ORDER BY ifadesi, "Yaş" sütununu kullanarak satırların zorunluluğunu belirlemek için bulaşır.
>> SEÇ İsim, Yaş, Maaş, DENSE_RANK() OVER(BÖLÜM ADINA GÖRE SİPARİŞ Yaşa göre) new_rank FROM data.çalışan;Yukarıdaki sorguyu yürüttüğünüzde, yukarıdaki örnekteki Single yoğun_rank() yöntemine kıyasla çok farklı bir sonuç elde ettiğimizi görebilirsiniz. Aşağıda görebileceğiniz gibi, her satır değeri için aynı tekrarlanan değere sahibiz. Bu rütbe değerlerinin bağı.
MySQL PERCENT_RANK():
Gerçekten de, bir bölüm veya sonuç koleksiyonu içindeki satırları hesaplayan bir yüzde sıralama (karşılaştırmalı sıralama) yöntemidir. Bu yöntem, sıfırdan 1'e kadar bir değer ölçeğinden bir liste döndürür.
Örnek 01: Basit PERCENT_RANK()
“Çalışan” tablosunu kullanarak basit PERCENT_RANK() yöntemi örneğine bakıyoruz. Bunun için aşağıda verilen bir sorgumuz var. Per_rank sütunu, sonuç kümesini yüzde biçiminde sıralamak için PERCENT_Rank() yöntemi tarafından oluşturulmuştur. Verileri “Yaş” sütununun sıralama düzenine göre getiriyoruz ve ardından bu tablodaki değerleri sıralıyoruz. Bu örnek için sorgu sonucu, aşağıdaki resimde gösterildiği gibi bize değerler için bir yüzde sıralaması verdi.
>> SEÇ *, PERCENT_RANK() ÜZERİNDE( Yaşa Göre SİPARİŞ ) per_rank FROM veri.çalışan;
Örnek 02: PERCENT_RANK() PARTITION kullanarak
Basit PERCENT_RANK() örneğini yaptıktan sonra, şimdi sıra “PARTITION BY” deyiminde. Aynı tabloyu kullanıyoruz “çalışan”. Sonuç kümesini bölümlere ayıran başka bir örneğe bir göz atalım. Aşağıdaki sözdiziminden verildiğinde, PARTITION BY ifadesi tarafından elde edilen set duvarı FROM bildirimi tarafından geri ödenir ve daha sonra her satır sırasını “Ad” sütununa göre sıralamak için PERCENT_RANK() yöntemi kullanılır. Aşağıdaki resimde, sonuç kümesinin yalnızca 0 ve 1 değerleri içerdiğini görebilirsiniz.
>> SELECT *, PERCENT_RANK() OVER(BÖLÜMÜ MAAŞA GÖRE SİPARİŞ) per_rank FROM verisi.çalışan;
Sonuç:
Son olarak, MySQL komut satırı istemci kabuğu aracılığıyla MySQL'de kullanılan satırlar için üç sıralama işlevini de yaptık. Ayrıca çalışmamızda hem simple hem de PARTITION BY deyimini dikkate aldık.