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?


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


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.