Parece que MySQL
no admite funciones de ventana.
Por ejemplo, lo simple: COUNT(*) OVER() AS cnt
no 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?
mysql
window-functions
Cratilo
fuente
fuente
Respuestas:
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_CONCAT
para 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 enGROUP_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()
:DISTINCT
ORDER BY ... ASC/DESC
SEPARATOR
(*) Se ha agregado soporte para funciones de ventana en MySQL 8
fuente
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.
fuente