MySQL MariaDB

Función de ventana de número de fila de MySQL

Función de ventana de número de fila de MySQL
Dentro de MySQL, un método ROW NUMBER () contiene un número cronológico para cada fila dentro de la partición. Es solo una característica de la ventana de algún tipo. La figura de filas comienza en 1 con la figura de filas dentro de la partición. Recuerde, antes de la versión 8.0, MySQL no permite la función ROW NUMBER () sin embargo, ofrece una variable de sesión que ayuda a imitar esta función. Comprenderemos más sobre la funcionalidad NÚMERO DE FILA () de MySQL a lo largo de esta guía y produciremos un número consecutivo para cada fila en la colección de resultados. En MySQL, los métodos ROW_NUMBER () se utilizan con las cláusulas siguientes:

Sintaxis:

>> SELECT col_name, ROW_NUMBER () OVER (PARTICIÓN POR col_name, ORDER BY col_name) AS row_num FROM table_name;

Abramos el shell del cliente de línea de comandos de MySQL desde las aplicaciones y escriba la contraseña para iniciar sesión.

Debe crear una nueva tabla o usar la tabla predeterminada para comenzar a trabajar en la función de número de fila. Como se muestra en la imagen de abajo, tenemos una tabla "animales" en el esquema "datos" con algunos registros en ella. Busquemos sus registros usando la instrucción SELECT.

>> SELECCIONAR * DE datos.animales

Ejemplo 01: ROW_NUMBER () con la cláusula ORDER BY

Usaremos la misma tabla para desarrollar algunos ejemplos de la función de número de fila. Estamos tomando un ejemplo de la función ROW_NUMBER () seguida de Over (), mientras que solo usamos la cláusula ORDER BY. Hemos estado obteniendo todos los registros mientras numeramos las filas de acuerdo con el orden de la columna "Precio". Le hemos dado el nombre "row_num" a una columna, que almacenará los números de la fila. Probemos el siguiente comando para hacerlo.

>> SELECT *, ROW_NUMBER () OVER (ORDER BY Price) AS row_num FROM data.animales

Al ejecutar la consulta anterior, podemos ver que a las filas se les han asignado números según el orden de clasificación de la columna “Precio”. Puede pensar que algunos precios más pequeños deberían estar en la parte superior de la columna y deberían ordenarse de acuerdo con eso. Pero la cláusula ORDER BY solo ve el primer dígito o alfabeto de la columna para ordenar los valores.

Ejecutemos la misma consulta seguida de la cláusula ORDER BY mientras usamos el orden de clasificación de la columna "Edad". La salida se dará según la columna "Edad".

>> SELECT *, ROW_NUMBER () OVER (ORDER BY Age) AS row_num FROM data.animales

Ejemplo 02: ROW_NUMBER () con la cláusula PARTITION BY

Usaremos la única cláusula PARTITION BY en la consulta ROW_NUMBER () para verificar los resultados. Hemos estado usando la consulta SELECT para obtener los registros seguidos de ROW_NUMBER () y la cláusula OVER, mientras particionamos la tabla de acuerdo con la columna "Color". Ejecute el comando adjunto a continuación en el shell de comandos.

>> SELECT *, ROW_NUMBER () OVER (PARTICIÓN POR color) COMO row_num FROM datos.animales

Puede ver en el resultado que la numeración de filas se ha asignado en particiones, de acuerdo con el orden de clasificación de los colores. Como tenemos 4 valores para el color "Negro" que ocupa 4 filas. Por eso tiene números de cuatro filas que comienzan del 1 al 4 y viceversa.

Pruebe el mismo ejemplo, dividido por la columna "Sexo" esta vez. Como sabemos, solo tenemos dos géneros en esta tabla, por eso se formarán 2 particiones. Las hembras ocupan 9 filas, por eso tiene una numeración de filas del 1 al 9. Mientras que los machos tienen 8 valores, por eso tiene de 1 a 8.

>> SELECT *, ROW_NUMBER () OVER (PARTITION BY Gender) AS row_num FROM data.animales

Ejemplo 03: ROW_NUMBER () usando PARTITION BY & ORDER BY

Hemos hecho los dos ejemplos anteriores en la línea de comandos de MySQL, ahora es el momento de hacer el ejemplo ROW_NUMBER () en MySQL Workbench 8.0. Entonces, abra MySQL Workbench 8.0 de las aplicaciones. Conecte MySQL Workbench con la base de datos raíz del host local para comenzar a trabajar.

En el lado izquierdo de MySQL Workbench, encontrará la barra de esquema, sople el navegador. En esta barra de esquema, encontrará la lista de bases de datos. Debajo de la lista de bases de datos, tendrá diferentes tablas y procedimientos almacenados, como puede ver en la imagen de abajo. Tenemos diferentes tablas en nuestra base de datos 'datos'. Abriremos la tabla 'order1' usando el comando SELECT en el área de consulta para comenzar a usarla para la implementación de la función ROW_NUMBER ().

>> SELECCIONAR * DE datos.order1;

La tabla "order1" se ha mostrado en la vista de cuadrícula como se muestra a continuación. Puede ver que tiene 4 campos de columna, id, región, estado y OrderNo. Obtendremos todos los registros de esta tabla mientras usamos la cláusula ORDER BY y PARTITION BY, ambas al mismo tiempo.

En el área de consulta de MySQL Workbench 8.0, escriba la consulta que se muestra a continuación. La consulta se ha iniciado con la cláusula SELECT, obteniendo todos los registros seguidos de la función ROW_NUMBER () junto con la cláusula OVER. Después de la cláusula OVER, hemos especificado la columna "Estado" seguida de la declaración "PARTICIÓN POR" para dividir la tabla en particiones de acuerdo con esta tabla. La cláusula ORDER BY se ha utilizado para organizar la tabla en forma descendente de acuerdo con la columna "Región". Los números de fila se mantendrán en la columna "row_num". Toque el icono de flash para ejecutar este comando.

Se mostrará el resultado que se muestra a continuación. En primer lugar, la tabla se ha segregado en dos partes según los valores de la columna "Estado". Después de eso, se ha presentado en orden descendente de la columna 'Región' y las particiones se han asignado con los números de fila.

Conclusión:

Finalmente, hemos completado todos los ejemplos necesarios en el uso de la función ROW_NUMBER () en MySQL Workbench y MySQL Command-line Client Shell.

Cómo cambiar la configuración del mouse y el panel táctil con Xinput en Linux
La mayoría de las distribuciones de Linux se envían con la biblioteca "libinput" de forma predeterminada para manejar eventos de entrada en un sistema...
Vuelva a asignar los botones del mouse de manera diferente para diferentes programas con X-Mouse Button Control
Tal vez necesite una herramienta que pueda hacer que el control de su mouse cambie con cada aplicación que use. Si este es el caso, puede probar una a...
Revisión del mouse inalámbrico Microsoft Sculpt Touch
Recientemente leí sobre el Microsoft Sculpt Touch mouse inalámbrico y decidí comprarlo. Después de usarlo por un tiempo, decidí compartir mi experienc...