MySQL та віконні функції


30

Здається, що MySQLне підтримує віконні функції.
Наприклад, простий: COUNT(*) OVER() AS cntне працює.
Я не впевнений, що це стосується і комерційної версії (я припускаю, що версія спільноти обмежена підмножиною).
Якщо ні, то як обходиться ця відсутність функції?


3
Видання спільноти MySQL Server не є обмеженою підмножиною в будь-якому змістовному сенсі. Відмінності полягають у додатках та плагінах, які не впливають на основні функціональні можливості.
Майкл - sqlbot

Погляньте на це вирішення тут і тут
StuartLC

Власне, MySQL9 підтримує його. Я використовую панди замість того, який вид смокче.
Ендрю Скотт Еванс

1
MySQL 8 підтримує функцію вікна. Довідково: dev.mysql.com/doc/refman/8.0/en/window-functions.html
gvgvgvijayan

MySQL підтримує віконні функції з версії 8.0. Це посилання може допомогти.
Хамід Мохейджі

Відповіді:


36

MySQL не підтримує функції вікна (*). Є те, що ми називаємо "функцією вікна бідної людини" у вигляді GROUP_CONCAT () .

Існує маса хитрощів, що використовуються GROUP_CONCATдля імітації віконних функцій. Вони не такі ситні (синтаксично) і іноді занадто обмежені. Я написав декілька. Дивіться мій пост у блозі, який скаржиться на відсутні функції вікна та посилається на різні рішення на основі GROUP_CONCAT.

Зокрема, вибір конкретних не агрегованих даних стовпців у групі GROUP BY та SQL: підбір топ-N записів у групі, інше рішення може зацікавити вас і може дати вам початок.

Про що слід звернути увагу GROUP_CONCAT():

  • Можна використовувати DISTINCT
  • Можна використовувати ORDER BY ... ASC/DESC
  • Можна встановити SEPARATOR
  • Як будь-яка функція агрегації - вона відкидає значення NULL; багато хитрощів щодо цього.

(*) У MySQL 8 додано підтримку функцій вікон


MySQL підтримує віконні функції з версії 8
Макс

GROUP_CONCAT - це не функція вікна, це впорядкована задана функція.
SQLRaptor

1
@SQLRaptor ніхто не стверджував, що це так.
ypercubeᵀᴹ

11

Справді слід зазначити, що MariaDB 10.2 (випущений у травні 2017 року) віконні функції . Це, безумовно, одна дорога, яку слід просунути, якщо вам потрібні функції MySQL та вікна.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.