- Los métodos siempre funcionan con una cláusula Over ().
- En orden cronológico, asignan a cada fila un rango.
- Dependiendo del ORDER BY, las funciones asignan un rango a cada fila.
- Las filas siempre parecen tener un rango asignado, comenzando con una para cada nueva partición.
En total, hay tres tipos de funciones de clasificación, como sigue:
- Rango
- Rango denso
- Rango de porcentaje
RANGO MySQL ():
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 filas no se asigna todo el tiempo (i.mi., aumentado en uno de la fila anterior). Incluso cuando tiene un empate entre varios de los valores, en ese punto, la utilidad rank () le aplica la misma clasificación. 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 la línea de comandos y escriba su contraseña de MySQL para comenzar a usarlo.
Suponga que tenemos una tabla a continuación llamada "igual" dentro de una base de datos "datos", con algunos registros.
>> SELECCIONAR * DE datos.mismo;
Ejemplo 01: RANGO simple ()
A continuación, hemos estado usando la función de rango dentro del comando SELECT. Esta consulta selecciona la columna "id" de la tabla "mismo" 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.
>> SELECT id, RANK () OVER (ORDER BY id) my_rank FROM fata.mismo;
Ejemplo 02: RANK () usando PARTITION
Suponga otra tabla "empleado" en una base de datos "datos" con los siguientes registros. Tengamos otra instancia que divide el conjunto de resultados en segmentos.
>> SELECCIONAR * DE datos.empleado;
Para consumir el método RANK (), la instrucción siguiente asigna el rango a cada fila y divide el conjunto de resultados en particiones utilizando "Edad" y clasificándolos según el "Salario". Esta consulta ha obtenido todos los registros mientras se clasifica en una columna "new_rank". Puede ver el resultado de esta consulta a continuación. Ha ordenado la tabla según "Salario" y la ha dividido según "Edad".
>> SELECT *, RANK () OVER (PARTITION BY Age ORDER BY Salario) new_rank FROM 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 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 siguiente número sucesivo.
Ejemplo 01: DENSE_RANK () simple
Supongamos que tenemos una tabla "empleado", y tiene que 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 ella. Al ejecutar la consulta a continuación, tenemos los siguientes resultados con una clasificación diferente para todos los valores.
>> SELECT Nombre, Salario, DENSE_RANK () OVER (ORDER BY Name) dens_rank FROM datos.empleado;
Ejemplo 02: DENSE_RANK () usando PARTITION
Veamos otra instancia que divide el conjunto de resultados en segmentos. De acuerdo con la siguiente sintaxis, el conjunto resultante particionado por la frase PARTITION BY es devuelto por la instrucción FROM, y el método DENSE_RANK () luego se difunde en cada sección usando la columna "Nombre". Luego, para cada segmento, la frase ORDER BY se difumina para determinar el imperativo de las filas usando la columna "Edad".
>> SELECT Nombre, Edad, Salario, DENSE_RANK () OVER (PARTICIÓN POR Nombre ORDER BY Edad) new_rank FROM datos.empleado;Al ejecutar la consulta anterior, puede ver que tenemos un resultado muy distinto en comparación con el método Single dense_rank () en el ejemplo anterior. Tenemos el mismo valor repetido para cada valor de fila, como puede ver a continuación. Es el lazo de los valores de rango.
PERCENT_RANK de MySQL ():
De hecho, es un método de clasificación porcentual (clasificación comparativa) que calcula las filas dentro de una partición o colección de resultados. Este método devuelve una lista de una escala de valores de cero a 1.
Ejemplo 01: PERCENT_RANK () simple
Usando la tabla "empleado", hemos estado mirando el ejemplo del método simple PERCENT_RANK (). Tenemos una consulta dada a continuación para esto. La columna per_rank ha sido generada por el método PERCENT_Rank () para clasificar el conjunto de resultados en forma de porcentaje. Hemos estado obteniendo los datos según 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 que se presentan en la imagen a continuación.
>> SELECT *, PERCENT_RANK () OVER (ORDER BY Age) per_rank FROM datos.empleado;
Ejemplo 02: PERCENT_RANK () usando PARTITION
Después de hacer el ejemplo simple de PERCENT_RANK (), ahora es el turno de la cláusula "PARTITION BY". Hemos estado usando la misma tabla "empleado". Echemos otro vistazo a otra instancia que divide el conjunto de resultados en secciones. Dada la siguiente sintaxis, el muro de conjunto resultante de la expresión PARTITION BY es reembolsado por la declaración FROM, así como el método PERCENT_RANK () se utiliza para clasificar cada orden de fila por la columna "Nombre". En la imagen que se muestra a continuación, puede ver que el conjunto de resultados contiene solo valores 0 y 1.
>> SELECT *, PERCENT_RANK () OVER (PARTICIÓN POR Salario ORDEN POR Nombre) per_rank FROM datos.empleado;
Conclusión:
Finalmente, hemos realizado las tres funciones de clasificación para las filas utilizadas en MySQL, a través del shell de cliente de línea de comandos de MySQL. Además, hemos tenido en cuenta tanto la cláusula simple como la cláusula PARTITION BY en nuestro estudio.