MySQL ve pencere fonksiyonları


30

MySQLPencere işlevlerini desteklemiyor gibi görünüyor .
Örneğin basit: COUNT(*) OVER() AS cntçalışmıyor.
Emin değilim, bunun ticari sürüm için de geçerli olup olmadığıdır (Topluluk sürümünün sınırlı altkümenin olduğunu varsayarım).
Olmazsa, bir kişi bu eksik özellik etrafında nasıl çalışır?


3
MySQL Server'ın topluluk sürümü, anlamlı bir şekilde sınırlı bir altküme değildir. Farklılıklar, çekirdek işlevselliğini etkilemeyen eklentiler ve eklentilerdir.
Michael - sqlbot


Aslında, MySQL9 bunu destekliyor. Bunun yerine ne tür berbat bir panda kullanıyorum.
Andrew Scott Evans

1
MySQL 8, pencere işlevini destekler. Başvuru için: dev.mysql.com/doc/refman/8.0/en/window-functions.html
gvgvgvijayan

MySQL, 8.0 sürümünden bu yana pencere işlevlerini destekler. Bu bağlantı yardımcı olabilir.
Hamid Mohayeji

Yanıtlar:


36

MySQL, Pencere İşlevlerini (*) desteklememektedir. GROUP_CONCAT () biçiminde "fakir bir adamın pencere işlevi" dediğimiz şey var .

GROUP_CONCATPencere işlevlerini taklit etmek için kullanılabilecek birçok püf noktası vardır . O kadar güzel değiller (sözdizimsel olarak) ve bazen çok sınırlılar. Birkaç tane yazdım. Blog gönderimdeki eksik pencere işlevleri hakkında şikayette bulunma ve temelli çeşitli çözümlere bağlantı kurma GROUP_CONCAT.

Özellikle, GROUP BY ve SQL'de belirli bir toplulaştırılmamış sütun verisinin seçilmesi: grup başına en iyi N kaydı seçmek, başka bir çözüm ilginizi çekebilir ve size daha yeni bir başlangıç ​​yapabilir.

Dikkat etmeniz gerekenler GROUP_CONCAT():

  • Kullanabilirsiniz DISTINCT
  • Kullanabilirsiniz ORDER BY ... ASC/DESC
  • Ayarlayabilir SEPARATOR
  • Herhangi bir birleştirme işlevi olarak - NULL değerlerini atar; Bunun üzerine bol hileci.

(*) MySQL 8’de Pencere İşlevleri desteği eklendi


MySQL, Sürüm 8'den itibaren pencere fonksiyonlarını destekler
Max

GROUP_CONCAT bir pencere işlevi değil, sıralı bir ayar işlevidir.
SQLRaptor

1
@SQLRaptor kimse olduğunu iddia etti.
ypercubeᵀᴹ

11

MariaDB 10.2'nin (2017 Mayıs'ta yayınlandı) pencere işlevlerine sahip olduğu gerçekten unutulmamalıdır . Bu, MySQL ve pencere işlevlerine ihtiyacınız varsa izlemeniz gereken tek yol.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.