MySQL y funciones de ventana

30

Parece que MySQLno admite funciones de ventana.
Por ejemplo, lo simple: COUNT(*) OVER() AS cntno funciona.
Lo que no estoy seguro es si esto también se aplica a la versión comercial (supongo que la versión de la comunidad es un subconjunto limitado).
Si no es así, ¿cómo se puede evitar esta característica que falta?

Cratilo
fuente
3
La edición comunitaria de MySQL Server no es un subconjunto limitado en ningún sentido significativo. Las diferencias están en complementos y complementos que no afectan la funcionalidad principal.
Michael - sqlbot
Eche un vistazo a esta solución aquí y aquí
StuartLC
En realidad, MySQL9 lo admite. He estado usando pandas en su lugar, que tipo de apesta.
Andrew Scott Evans
1
MySQL 8 admite la función de ventana. A modo de referencia: dev.mysql.com/doc/refman/8.0/en/window-functions.html
gvgvgvijayan
MySQL admite funciones de ventana desde la versión 8.0. Este enlace puede ayudar.
Hamid Mohayeji el

Respuestas:

36

MySQL no admite funciones de ventana (*). Existe lo que llamamos "función de ventana de un hombre pobre" en forma de GROUP_CONCAT () .

Hay muchos trucos GROUP_CONCATpara emular las funciones de la ventana. No son tan bonitas (sintácticamente) y a veces son demasiado limitadas. He escrito algunos. Vea mi publicación de blog quejándose de las funciones de ventana que faltan y vinculando a varias soluciones basadas en GROUP_CONCAT.

En particular, al seleccionar una columna específica de datos no agregados en GROUP BY y SQL: seleccionando los N registros principales por grupo, otra solución podría ser de su interés y podría darle un buen comienzo.

Cosas que debe tener en cuenta GROUP_CONCAT():

  • Puedo usar DISTINCT
  • Puedo usar ORDER BY ... ASC/DESC
  • Puede establecer SEPARATOR
  • Como cualquier función de agregación, descarta los valores NULL; muchos trucos sobre eso.

(*) Se ha agregado soporte para funciones de ventana en MySQL 8

Shlomi Noach
fuente
MySQL admite funciones de ventana a partir de la Versión 8
Máx.
GROUP_CONCAT no es una función de ventana, es una función de conjunto ordenado.
SQLRaptor
1
@SQLRaptor nadie lo afirmó.
ypercubeᵀᴹ
11

Cabe señalar que MariaDB 10.2 (lanzado en mayo de 2017) tiene funciones de ventana . Esa es ciertamente una vía a seguir si necesita MySQL y funciones de ventana.

chx
fuente