MySQL e funções de janela

30

Parece que MySQLnão suporta funções de janela.
Por exemplo, o simples: COUNT(*) OVER() AS cntnão funciona.
O que não tenho certeza é se isso também se aplica à versão comercial (presumo que a versão da comunidade seja um subconjunto limitado).
Caso contrário, como solucionar esse recurso ausente?

Cratylus
fonte
3
A edição da comunidade do MySQL Server não é um subconjunto limitado em nenhum sentido significativo. As diferenças estão nos complementos e plugins que não afetam a funcionalidade principal.
Michael - sqlbot
Dê uma olhada nesta solução alternativa aqui e aqui
StuartLC
Na verdade, o MySQL9 suporta isso. Em vez disso, tenho usado pandas que tipo de droga.
Andrew Scott Evans
11
O MySQL 8 suporta a função de janela. Para referência: dev.mysql.com/doc/refman/8.0/en/window-functions.html
gvgvgvijayan
O MySQL suporta funções de janela desde a versão 8.0. Este link pode ajudar.
Hamid Mohayeji 23/11

Respostas:

36

O MySQL não suporta funções de janela (*). Existe o que chamamos de "função de janela de um pobre homem" na forma de GROUP_CONCAT () .

Existem muitos truques GROUP_CONCATpara emular as funções da janela. Eles não são tão bonitos (sintaticamente) e às vezes são muito limitados. Eu escrevi alguns. Veja o meu post no blog reclamando das funções ausentes da janela e vinculando a várias soluções baseadas em GROUP_CONCAT.

Em particular, Selecionando dados específicos de uma coluna não agregada em GROUP BY e SQL: selecionando os principais N registros por grupo, outra solução pode ser do seu interesse e dar-lhe um pontapé inicial.

Coisas que você deve observar sobre GROUP_CONCAT():

  • Pode usar DISTINCT
  • Pode usar ORDER BY ... ASC/DESC
  • Pode definir SEPARATOR
  • Como qualquer função de agregação - descarta valores NULL; muitos truques sobre isso.

(*) Suporte para funções de janela foi adicionado no MySQL 8

Shlomi Noach
fonte
O MySQL suporta funções de janela a partir da Versão 8
Max
GROUP_CONCAT não é uma função de janela, é uma função de conjunto ordenada.
SQLRaptor 3/09/18
11
@SQLRaptor ninguém afirmou que é.
precisa saber é o seguinte
11

É importante ressaltar que o MariaDB 10.2 (lançado em maio de 2017) possui funções de janela . Esse é certamente um caminho a seguir, se você precisar de MySQL e funções de janela.

chx
fonte