mysql | PARTICIÓN POR Cláusula

Una cláusula PARTITION BY se usa para dividir las filas de la tabla en grupos. Es útil cuando tenemos que realizar un cálculo en filas individuales de un grupo usando otras filas de ese grupo.

  • Siempre se usa dentro de la cláusula OVER().
  • La partición formada por la cláusula de partición también se conoce como Ventana .
  • Esta cláusula funciona solo en funciones de Windows. Como- RANGO(), LEAD(), LAG() etc.
  • Si esta cláusula se omite en la cláusula OVER(), la tabla completa se considera como una única partición.

Sintaxis:
La sintaxis para la cláusula de partición es-

Window_function ( expression ) 
       Over ( partition by expr [order_clause] [frame_clause] ) 

Aquí, order_clause y frame_clause son opcionales.

expr pueden ser nombres de columna o funciones integradas en MySQL.

Pero, el SQL estándar solo permite nombres de columna en expr.

Ejemplos:

Consideremos, una tabla “ Hacker ”:

escondido h_nombre reto_id puntaje
3 shubh 111 20
2 ayush 111 80
5 Krithik 112 40
5 Krithik 114 90
4 tushar 112 30
1 parte 112 40

Tenemos que encontrar el rango de hackers en cada desafío. Eso significa que tenemos que enumerar todos los piratas informáticos que participaron en un desafío junto con su rango en ese desafío.

Consulta:

select challenge_id, h_id, h_name, score, 
   dense_rank() over ( partition by challenge_id order by score desc ) 
       as "rank", from hacker;

Explicación:

En la consulta anterior, la partición por cláusula dividirá la tabla en grupos que tienen el mismo desafío_id.

order by ordenará los hackers de cada partición en orden descendente por «puntuaciones».

La cláusula over() define cómo particionar y ordenar las filas de la tabla, que debe ser procesada por la función de ventana rank().

dense_rank() es una función de ventana, que asignará rango en una partición ordenada de desafíos. Si dos piratas informáticos tienen las mismas puntuaciones, se les asignará el mismo rango.

Producción:

reto_id escondido h_nombre puntaje rango
111 2 ayush 80 1
111 3 shubh 20 2
112 5 Krithik 40 1
112 1 parte 40 1
112 4 tushar 30 2
114 5 Krithik 90 1

Por lo tanto, obtenemos una lista de todos los piratas informáticos junto con sus rangos en los desafíos individuales.

Publicación traducida automáticamente

Artículo escrito por Tanvi_Garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *