Fungsi MySQL dan jendela

30

Tampaknya MySQLtidak mendukung fungsi jendela.
Misal yang sederhana: COUNT(*) OVER() AS cnttidak 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?

Cratylus
sumber
3
Edisi komunitas MySQL Server bukanlah subset terbatas dalam arti yang berarti. Perbedaannya ada pada add-ons dan plugin yang tidak memengaruhi fungsionalitas inti.
Michael - sqlbot
Lihatlah pemecahan masalah ini di sini dan di sini
StuartLC
Sebenarnya, MySQL9 mendukungnya. Saya telah menggunakan panda, bukan jenis yang menyebalkan.
Andrew Scott Evans
1
MySQL 8 mendukung fungsi jendela. Untuk referensi: dev.mysql.com/doc/refman/8.0/en/window-functions.html
gvgvgvijayan
MySQL mendukung fungsi jendela sejak versi 8.0. Tautan ini mungkin membantu.
Hamid Mohayeji

Jawaban:

36

MySQL tidak mendukung Fungsi Jendela (*). Ada yang kami sebut "fungsi jendela orang miskin" dalam bentuk GROUP_CONCAT () .

Ada banyak trik yang digunakan GROUP_CONCATuntuk 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 berdasarkan GROUP_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():

  • Bisa menggunakan DISTINCT
  • Bisa menggunakan ORDER BY ... ASC/DESC
  • Dapat diatur SEPARATOR
  • Seperti fungsi agregasi apa pun - ia membuang nilai NULL; banyak trik untuk itu.

(*) Dukungan untuk Fungsi Jendela telah ditambahkan di MySQL 8

Shlomi Noach
sumber
MySQL mendukung fungsi jendela pada Versi 8
Max
GROUP_CONCAT bukan fungsi jendela, ini adalah fungsi set yang dipesan.
SQLRaptor
1
@ SQLQLaptor tidak ada yang mengklaim itu.
ypercubeᵀᴹ
11

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.

chx
sumber