Grupo PostgreSQL por

Grupo Postgresql Por



La cláusula group by de Postgresql es una característica que se usa para unir/combinar esas filas en la tabla que tienen los mismos datos. Esta cláusula se utiliza principalmente para eliminar datos duplicados y mantener la concurrencia. Siempre que queramos calcular la suma, o cualquier otro agregado como AVG, etc., esta cláusula group by siempre se usa, ya que hay muchas cláusulas que se usan en PostgreSQL. Pero existe una jerarquía entre cada cláusula.

DESDE > DONDE > “AGRUPAR POR” > TENIENDO > SELECCIONAR > DISTINTO > ORDENAR POR > LÍMITE

El funcionamiento de PostgreSQL se encuentra dentro de 'dónde' y la cláusula 'Tener'.







Sintaxis



columna SELECCIONAR

DESDE dumytable

DONDE [condiciones]

AGRUPAR POR primeracolumna, segundacolumna..

ORDENAR POR primeracolumna, segundacolumna.. ;

Ejemplo 1



Para entender el concepto del grupo por función, usamos un ejemplo aquí. En la tabla de pasajeros, puedes ver que los apellidos son los mismos para algunas personas. Cada nombre que es similar a otro forma un grupo, y su pago se suma colectivamente contra cada mismo nombre. Esto se desarrolla en el siguiente ejemplo.





>> seleccione lname, SUM (pago) del GRUPO DE PASAJEROS POR lname;

El apellido del pasajero se selecciona con el uso de una función incorporada 'SUMA' que toma la columna 'pago'. Y agregue el pago para aquellas personas que tienen el mismo nombre. Por ejemplo, se agrega el salario de “Javed” y “saad”. Mientras que para “Malik” y “Shams”, se menciona individualmente.



Del mismo modo, considere una mesa 'hospital'. Queremos agrupar la ciudad por edad. En este ejemplo, una ciudad existe más de una vez en una columna. Cada ciudad se agrupa con el mismo nombre de ciudad. Las edades de cada grupo de la ciudad se suman y forman una sola fila.

Hospital:

>> seleccionar ciudad, SUMA (edad) del hospital GRUPO POR ciudad;

Ejemplo 2

Alternativamente, si seleccionamos el apellido con el id de la tabla de pasajeros, el resultado será una tabla diferente. Porque cuando agrupamos ambas columnas, mostrará el nombre de cada pasajero porque la identificación de cada pasajero, incluso con un apellido común, es diferente. La suma se calcula en una columna separada, pero el pago de cada pasajero se menciona delante de su nombre porque la agrupación de lname no se hace aquí.

Este es un ejemplo de la cláusula group by con varias columnas. Porque cuando se seleccionan varias columnas para agrupar, el valor resultante cambia en comparación con el grupo de una sola tabla.

>> seleccione id, lname, SUM (pago) del pasajero GROUP BY id, lname;

De la salida, notará una cosa que, en primer lugar, se muestran todos los nombres que son poco comunes, y luego los que son iguales se mencionan en la tabla.

Ejemplo 3

Este ejemplo tiene una condición de unión y una cláusula group by. Como se usa 'unirse', significa que hemos usado dos tablas aquí. Uno es 'artículo' y el otro es 'pedidos'.

Elementos:

Pedidos:

Hemos utilizado un método de concatenación (utilizado para unir dos cadenas) para unir los valores de dos columnas de la tabla 'elementos' con ',' y nombrar la columna colectivamente como 'descripción'. es opcional; puede tomarlos por separado. En esta consulta, la palabra clave 'USO' identifica la columna específica de la otra tabla. La dirección de la tabla de artículos se compara con la columna de dirección de la tabla de 'pedidos'. Esto se hace haciendo una unión entre dos tablas. Como en los ejemplos anteriores, ambas columnas serán seleccionadas por la cláusula GROUP BY.

>> seleccionar nombre || ',' || categoría como Descripción, dirección de los artículos unión interna Órdenes USANDO (dirección) GRUPO POR dirección, Descripción;

Puede observar que se seleccionarán 5 filas con la dirección de los artículos que coincida con la dirección de los Pedidos. Y luego, la columna Descripción se formará en correspondencia con la columna de dirección.

Del mismo modo, hay otro ejemplo de concatenación con el factor edad en dos tablas. Uno es 'pasajero', y el otro es 'trabajador'. La concatenación es entre el nombre y el apellido. Ambos nombres están separados por el espacio entre dos nombres. Hemos tomado una parte de la mesa de trabajadores aquí.

Obrero:

La consulta funcionará para que el punto donde el nombre del trabajador coincida con el pasajero, la edad del pasajero, se muestre en la columna de edad.

>> seleccionar fnombre || ' ' || pasajero.lname as nombre_completo, pasajero.edad from pasajero INTERNO únase al trabajador USING (fname) GRUPO POR nombre_completo, pasajero.edad ORDEN POR pasajero.edad;

Se forma una fila. El full_name se crea uniendo dos columnas con espacio, y se selecciona la dirección donde el fname del pasajero coincide con el fname del trabajador.

Ejemplo 4

Este ejemplo trata sobre el uso de una función de recuento () para contar los identificadores de la tabla 'elementos'. Esto es nuevamente agrupar por la identificación de la tabla.

>> Seleccionar id, CONTAR (id) DE artículos GROUP BY id;

Las filas en la columna id se dividen en grupos. Cada grupo se cuenta en la columna cuantas veces aparece en la columna. En la tabla resultante, se crea una nueva columna con un nombre de 'recuento', y los valores del conteo se escriben aquí delante de cada grupo.

Tu pgAdmin

Ahora hemos aplicado algunos ejemplos en el panel de control de PostgreSQL. Estos ejemplos son diferentes en cierto modo porque forman una fila de subtotal de la columna original cuando cualquiera de los elementos difiere de los demás, por lo que el valor se devuelve como NULL.

Considere el primer ejemplo; aquí, hemos creado un nombre de columna 'TODOS' que ha combinado dos columnas. Una dirección y una categoría. La columna 'TODOS' cuenta los valores en ambas columnas colectivamente. La columna de dirección se agrupa como 'agregar', y la columna de categoría se agrupa por separado como 'gato'. Como los nombres de columna de ambas tablas utilizadas pueden coincidir entre sí. Entonces, a cada columna de la tabla respectiva se accede por un objeto específico.

La condición aplicada en el comando depende de la identificación y el número de pedido. Cuando estos números de identificación y de pedido son iguales, se recuperan los datos. Del mismo modo, también se agrega una condición adicional para el nombre.

>> SELECCIONE o.dirección, categoría, recuento (*) COMO “TODOS”, AGRUPACIÓN(o.dirección) COMO “agregar”, AGRUPACIÓN (categoría) COMO “gato” DE artículos I, pedidos o donde i.order_no = o. order_id AND i.address= 'Lahore' GRUPO POR CUBO (o.address, categoría) ORDEN POR 1, 2;

Para la ciudad de Lahore, se selecciona una categoría. Hay 4 posibilidades. A veces, el juguete está presente pero no la dirección. Y viceversa. Pero existe un momento en el que tanto la categoría como la dirección están presentes.

Ahora, si cambiamos la condición del nombre de una tabla y cambiamos la tabla por otra. 'Items.address' se reemplaza por 'order.address', entonces el resultado es diferente.

Conclusión

La cláusula 'Postgresql group by' se utiliza para aplicar cualquier operador agregado a los datos colectivos. Este artículo utiliza la cláusula group by con función de recuento, uniones y selección y agrupación de varias columnas. Estoy seguro de que este tutorial será el mejor medio de comprensión para los lectores.