Función de ventana de rango mysql

Función de ventana de rango mysql
El método de clasificación asigna un rango dentro de la partición de un resultado de un conjunto en cada fila. El rango de una fila se determina incrementando una cifra de rangos de la fila que lo precede. MySQL utiliza una función de clasificación que ayuda a un rango por fila en una partición de esquema. En MySQL, los métodos de calificación son de hecho una semi-parte del método de ventana. Utilizará los métodos de calificación en MySQL con las cláusulas posteriores:
  • Los métodos siempre funcionan con una cláusula Over ().
  • En orden cronológico, asignan cada fila un rango.
  • Dependiendo de la orden de las funciones asignan un rango a cada fila.
  • Las filas siempre parecen tener un rango asignado a ellas, comenzando con una para cada nueva partición.

En total, hay tres tipos de funciones de clasificación, como sigue:

  • Rango
  • Rango denso
  • Porcentaje de rango

MySQL Rank ():

Este es un método que da un rango dentro de una partición o matriz de resultados con brechas por fila. Cronológicamente, la clasificación de las filas no está asignada todo el tiempo (yo.mi., aumentado en uno de la fila anterior). Incluso cuando tiene un empate entre varios de los valores, en ese momento, la utilidad de rango () aplica la misma clasificación para él. Además, su rango anterior más una cifra de números repetidos puede ser el número de rango posterior.

Para comprender la clasificación, abra el shell del cliente de línea de comandos y escriba su contraseña mysql para comenzar a usarla.

Suponga que tenemos una tabla a continuación llamada "misma" dentro de una base de datos "datos", con algunos registros.

>> seleccionar * de los datos.mismo;

Ejemplo 01: rango simple ()

A continuación, hemos estado utilizando la función de rango dentro del comando seleccionar. Esta consulta selecciona la columna "ID" de la tabla "misma" mientras la clasifica de acuerdo con la columna "ID". Como puede ver, le hemos dado un nombre a la columna de clasificación, que es "my_rank". La clasificación ahora se almacenará en esta columna, como se muestra a continuación.

>> seleccionar id, rango () over (ordenar por id) my_rank de fata.mismo;

Ejemplo 02: rank () usando partición

Suponga otra tabla "empleado" en una base de datos "datos" con los siguientes registros. Tengamos otra instancia que divida el resultado establecido en segmentos.

>> seleccionar * de los datos.empleado;

Para consumir el método Rank (), la instrucción posterior asigna el rango a cada fila y divide el resultado de resultados en particiones utilizando "edad" y clasificándolas dependiendo del "salario". Esta consulta ha estado obteniendo todos los registros mientras se clasifica en una columna "New_Rank". Puede ver la salida de esta consulta a continuación. Ha ordenado la tabla de acuerdo con el "salario" y la dividió de acuerdo con la "edad".

>> select *, rank () Over (Partition by Age Order by Salary) New_Rank de datos.empleado;

Mysql dense_rank ()::

Esta es una funcionalidad donde, sin agujeros, determina un rango por cada fila dentro de una división o conjunto de resultados. La clasificación de las filas se asigna con mayor frecuencia en orden secuencial. A veces, tiene un vínculo entre los valores y, por lo tanto, se asigna al rango exacto por el rango denso, y su rango posterior es el próximo número siguiente.

Ejemplo 01: Simple Dense_Rank ()

Supongamos que tenemos una tabla "empleado", y debe clasificar las columnas de la tabla, "nombre" y "salario" de acuerdo con la columna "nombre". Hemos creado una nueva columna "Dens_Rank" para almacenar la calificación de los registros en él. Al ejecutar la consulta a continuación, tenemos los siguientes resultados con diferentes clasificaciones a todos los valores.

>> seleccionar nombre, salario, dense_rank () over (ordenar por nombre) dens_rank de datos.empleado;

Ejemplo 02: dense_rank () usando partición

Veamos otra instancia que divida el resultado establecido en segmentos. Según la siguiente sintaxis, el conjunto de la declaración de la partición resultante es devuelto por la declaración, y el método dense_rank () se mancha a cada sección utilizando la columna "nombre". Luego, para cada segmento, el orden por frase se mancha para determinar el imperativo de las filas usando la columna "edad".

>> Seleccionar nombre, edad, salario, dense_rank () over (partición por orden de nombre por edad) new_rank de datos.empleado;

Al ejecutar la consulta anterior, puede ver que tenemos un resultado muy distintivo en comparación con el método único dense_rank () en el ejemplo anterior. Tenemos el mismo valor repetido para cada valor de fila, como puede ver a continuación. Es el empate de los valores de rango.

MySQL porcentaje_Rank ():

De hecho, es un método de clasificación porcentual (rango comparativo) que calcula para filas dentro de una partición o colección de resultados. Este método devuelve una lista de una escala de valor de cero a 1.

Ejemplo 01: porcentaje simple ()

Usando la tabla "Empleado", hemos estado viendo el ejemplo del método simple porcentual_rank (). Tenemos una consulta a continuación para esta. La columna Per_Rank ha sido generada por el método porcentaje_rank () para clasificar el resultado establecido en el formulario porcentual. Hemos estado obteniendo los datos de acuerdo con el orden de clasificación de la columna "edad" y luego hemos estado clasificando los valores de esta tabla. El resultado de la consulta para este ejemplo nos dio una clasificación porcentual para los valores presentados en la imagen a continuación.

>> seleccionar *, porcentaje_rank () Over (Orden por edad) Per_rank de datos.empleado;

Ejemplo 02: porcentaje_rank () usando partición

Después de hacer el ejemplo simple de porcentaje_rank (), ahora es el turno para la cláusula "Partition by". Hemos estado usando la misma tabla "Empleado". Tengamos otra visión de otra instancia que divide el resultado establecido en secciones. Dado a partir de la siguiente sintaxis, la pared de la división resultante por la partición por expresión se reembolsa por la declaración de la declaración, así como el método porcentual_rank () se utiliza para clasificar cada orden de fila por el "nombre" de la columna ". En la imagen que se muestra a continuación, puede ver que el conjunto de resultados contiene solo 0 y 1 valores.

>> select *, porcentaje_rank () Over (partición por orden salarial por nombre) per_rank de datos.empleado;

Conclusión:

Finalmente, hemos realizado las tres funciones de clasificación para las filas utilizadas en MySQL, a través del shell del cliente de línea de comandos MySQL. Además, hemos tenido en cuenta tanto la cláusula simple como la partición por cláusula en nuestro estudio.