Función de ventana Número de fila mysql

Función de ventana Número de fila mysql
Dentro de MySQL, un método de número de fila () contiene un número cronológico para cada fila dentro de la partición. Es solo una característica de ventana de algún tipo. La figura de las filas comienza en 1 con la figura de filas dentro de la partición. Recuerda, antes de la versión 8.0, MySQL no permite la función de número de fila () Sin embargo, ofrece una variable de sesión que ayuda a imitar esta característica. Entenderemos más sobre la funcionalidad de mysql fila de fila () a lo largo de esta guía y produciremos un número consecutivo para cada fila de la colección de resultados. En MySQL, los métodos Row_Number () se utilizan con las cláusulas seguidas:
  • La cláusula Over () se usará dentro de ella.
  • Los pedidos por cláusula organizan el resultado de acuerdo con la orden de clasificación de la columna mencionada.

Sintaxis:

>> seleccione col_name, row_number () over (Partition by col_name, orden por col_name) como row_num de table_name;

Permítanos abrir el shell del cliente de línea de comandos 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 presenta en la imagen a continuación, tenemos una tabla "animales" en el esquema "datos" con algunos registros en ella. Vamos a buscar sus registros utilizando la instrucción Seleccionar.

>> seleccionar * de los datos.animales;

Ejemplo 01: row_number () usando el orden por cláusula

Usaremos la misma tabla para explicar 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 el orden por cláusula. Hemos estado obteniendo todos los registros mientras numeramos las filas de acuerdo con el pedido de "precio" de la columna. Hemos dado el nombre "row_num" a una columna, que almacenará los números de la fila. Probemos el siguiente comando para hacerlo.

>> seleccionar *, row_number () Over (orden por precio) como row_num de datos.animales;

Al ejecutar la consulta anterior, podemos ver que las filas han sido asignadas con números de acuerdo con 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 que debe ordenarse de acuerdo con eso. Pero el orden por cláusula solo ve el primer dígito o el alfabeto de la columna para clasificar los valores.

Ejecutemos la misma consulta seguida de la orden por cláusula mientras usa el orden de clasificación de la columna "edad". La salida se administrará de acuerdo con la columna "Edad".

>> seleccionar *, row_number () Over (ordenar por edad) como row_num de datos.animales;

Ejemplo 02: row_number () usando la partición por cláusula

Usaremos la única partición por cláusula en la consulta row_number () para verificar los resultados. Hemos estado utilizando la consulta SELECT para obtener los registros seguidos de Row_Number () y Over Clause, mientras dividiendo la tabla de acuerdo con la columna "Color". Ejecutar el comando adjunto a continuación en el shell de comando.

>> select *, row_number () Over (Partition by Color) como Row_num de datos.animales;

Puede ver en el resultado que la numeración de filas se ha asignado en particiones, de acuerdo con la orden de clasificación de colores. Como tenemos 4 valores para el color "negro" que toma 4 filas. Por eso tiene números de cuatro filas a partir de 1 a 4 y viceversa.

Pruebe el mismo ejemplo, dividido por la columna "Género" 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 fila de 1 a 9. Mientras que los hombres tienen 8 valores, por eso tiene 1 a 8.

>> select *, row_number () Over (Partition by Gender) como Row_num de datos.animales;

Ejemplo 03: row_number () usando la partición por y pedido por

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

En el lado izquierdo del banco de trabajo mysql, encontrarás la barra de esquema, sopla el navegador. En esta barra de esquema, encontrará la lista de bases de datos. En la lista de bases de datos, tendrá diferentes tablas y procedimientos almacenados, como puede ver en la imagen a continuación. Tenemos diferentes tablas en nuestra base de datos 'Datos'. Abriremos la tabla 'Order1' utilizando el comando SELECT en el área de consulta para comenzar a usarla para la implementación de la función row_number ().

>> seleccionar * de los datos.orden1;

La tabla "Order1" se ha mostrado en la vista de la cuadrícula como se muestra a continuación. Puede ver que tiene 4 campos de columna, ID, región, estado y ordeno. Obtendremos todos los registros de esta tabla mientras usamos el pedido por y la partición por cláusula, ambos al mismo tiempo.

En el área de consulta de MySQL Workbench 8.0, escriba la consulta a la vista 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 declaración de la columna realizada por la declaración "Partición por" para dividir la tabla en particiones de acuerdo con esta tabla. La orden por cláusula se ha utilizado para organizar la tabla de manera descendente de acuerdo con la columna "región". Los números de fila se mantendrán en la columna "row_num". Toque el icono Flash para ejecutar este comando.

Se mostrará el resultado a continuación. En primer lugar, la tabla se ha segregado en dos partes según los valores del "estado" de la columna. Después de eso, se ha presentado en el orden descendente de la 'región' de la columna 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.