MySQL и оконные функции

30

Кажется, что MySQLне поддерживает оконные функции.
Например, простое: COUNT(*) OVER() AS cntне работает.
Что я не уверен, так это то, относится ли это к коммерческой версии (я полагаю, что версия сообщества ограничена).
Если нет, то как обойти эту недостающую функцию?

Кратил
источник
3
Выпуск сообщества MySQL Server не является ограниченным подмножеством в каком-либо значимом смысле. Различия заключаются в надстройках и плагинах, которые не влияют на основные функции.
Майкл - sqlbot
Посмотрите на этот обходной путь здесь и здесь
StuartLC
На самом деле, MySQL9 поддерживает это. Вместо этого я использую панд, которые отстой.
Эндрю Скотт Эванс
1
MySQL 8 поддерживает оконную функцию. Для справки: dev.mysql.com/doc/refman/8.0/ru/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 и оконные функции.

СНХ
источник