Tampaknya MySQL
tidak mendukung fungsi jendela.
Misal yang sederhana: COUNT(*) OVER() AS cnt
tidak berfungsi.
Apa yang saya tidak yakin adalah apakah ini berlaku untuk versi komersial juga (saya menganggap versi komunitas adalah subset terbatas).
Jika tidak, bagaimana cara mengatasi fitur yang hilang ini?
mysql
window-functions
Cratylus
sumber
sumber
Jawaban:
MySQL tidak mendukung Fungsi Jendela (*). Ada yang kami sebut "fungsi jendela orang miskin" dalam bentuk GROUP_CONCAT () .
Ada banyak trik yang digunakan
GROUP_CONCAT
untuk meniru fungsi jendela. Mereka tidak secantik (secara sintaksis) dan kadang-kadang terlalu terbatas. Saya sudah menulis beberapa. Lihat posting blog saya mengeluh tentang fungsi jendela yang hilang , dan menautkan ke berbagai solusi berdasarkanGROUP_CONCAT
.Secara khusus, Memilih data kolom non agregat tertentu dalam GROUP BY dan SQL: memilih catatan N teratas per grup, solusi lain mungkin menarik bagi Anda dan dapat memberi Anda awal yang baik.
Hal-hal yang harus Anda perhatikan
GROUP_CONCAT()
:DISTINCT
ORDER BY ... ASC/DESC
SEPARATOR
(*) Dukungan untuk Fungsi Jendela telah ditambahkan di MySQL 8
sumber
Perlu dicatat bahwa MariaDB 10.2 (dirilis pada 2017 Mei) memiliki fungsi jendela . Itu tentu satu jalan untuk dikejar jika Anda membutuhkan fungsi MySQL dan jendela.
sumber