Cómo utilizar el grupo por, tener, y el orden de las cláusulas SQL

SQL le da opciones para recuperar, analizar y mostrar la información que necesita con el GROUP BY, HAVING y ORDER BY cláusulas. Estos son algunos ejemplos de cómo puede utilizarlos.

Cláusulas GROUP BY

A veces, en lugar de recuperar los registros individuales, quieres saber algo acerca de un grupo de registros. los AGRUPAR POR cláusula es la herramienta que necesita.

Supongamos que usted es el gerente de ventas de la oficina, y usted quiere ver el rendimiento de su fuerza de ventas. Si usted hace una sencilla SELECT, como por ejemplo la siguiente consulta:

imagen0.jpg
InvoiceNo SELECT, Fecha de Venta, vendedor, TotalSaleFROM ventas-

Este resultado le da una idea de lo bien que sus vendedores están haciendo porque muy pocas ventas totales están involucrados. Sin embargo, en la vida real, una empresa tendría muchas más ventas - y no sería tan fácil decir si se están cumpliendo los objetivos de ventas.

Para hacer el análisis real, puede combinar la AGRUPAR POR cláusula con una de las agregado funciones (también llamados funciones de ajuste) Para obtener una imagen cuantitativa del rendimiento de ventas. Por ejemplo, puede ver qué vendedor está vendiendo más de los objetos de alto precio rentables mediante el uso de la media (AVG) Función como sigue:

Vendedor SELECT AVG (VentaTotal) DE SalesGroup POR Salesperson-

Ejecución de la consulta con un sistema de gestión de base de datos diferente sería recuperar el mismo resultado, pero puede aparecer un poco diferente.

image1.jpg

El valor promedio de las ventas de Bennett es considerablemente mayor que la de los otros dos vendedores. Se trata de comparar las ventas totales con una consulta similar:

image2.jpg
Vendedor SELECT SUM (VentaTotal) DE SalesGroup POR Salesperson-

Bennett también tiene las más altas ventas totales, lo cual es consistente con que tiene los más altos promedio de ventas.

TENER cláusulas

Puede analizar los datos agrupados aún más mediante el uso de la TENIENDO cláusula. los TENIENDO cláusula es un filtro que actúa similar a una DÓNDE cláusula, sino en grupos de filas en lugar de en filas individuales. Para ilustrar la función de la TENIENDO cláusula, supongamos que el gerente de ventas considera Bennett estar en una clase por sí mismo.

Su actuación distorsiona los datos generales de los otros vendedores. (Aha -. Una curva-grúa) Puede excluir las ventas de Bennett de los datos agrupados utilizando un TENIENDO cláusula como sigue:

Vendedor SELECT SUM (VentaTotal) DE SalesGroup POR SalespersonHAVING vendedor lt;> 'Bennett'-

Se consideran sólo las filas donde el vendedor no es Bennett.

image3.jpg

Cláusulas ORDER BY

Utilizar el ORDER BY cláusula para mostrar la tabla de resultados de una consulta en orden ascendente o descendente orden alfabético. Mientras que el AGRUPAR POR cláusula reúne filas en grupos y ordena los grupos en orden alfabético, ORDER BY ordena filas individuales. los ORDER BY cláusula debe ser la última cláusula que especifique en una consulta.

Si la consulta también contiene una AGRUPAR POR cláusula, la cláusula primera organiza las filas de salida en grupos. los ORDER BY cláusula luego ordena las filas dentro de cada grupo. Si usted no tiene AGRUPAR POR cláusula, entonces la declaración considera toda la tabla como un grupo, y el ORDER BY cláusula ordena todas sus filas de acuerdo a la columna (o columnas) que la ORDER BY cláusula especifica.

Para ilustrar este punto, considere los datos de la tabla VENTAS. La tabla VENTAS contiene columnas para Factura no, Fecha de venta, Vendedor, y VentaTotal. Si utiliza el siguiente ejemplo, ver todos los datos de la tabla VENTAS - pero en un orden arbitrario:

SELECT * FROM VENTAS -

En una implementación, este puede ser el orden en el que ha insertado las filas de la mesa- en otra aplicación, el orden puede ser el de las actualizaciones más recientes. La orden también puede cambiar de forma inesperada si alguien reorganiza físicamente la base de datos. Esa es una razón por lo general es una buena idea para especificar el orden en que desea que las filas.

Es posible, por ejemplo, quiere ver las filas en orden por la Fecha de venta Me gusta esto:

SELECT * FROM ORDEN DE VENTAS POR Fecha de Venta -

Este ejemplo devuelve todas las filas de la tabla de ventas con el fin de Fecha de venta.

Para las filas con el mismo Fecha de venta, el orden predeterminado depende de la implementación. Puede, sin embargo, especificar cómo ordenar las filas que comparten la misma Fecha de venta. Es posible que desee ver las ventas de cada Fecha de venta con el fin de Factura no, como sigue:

* SELECT DE ORDEN DE VENTAS POR Fecha de Venta, InvoiceNo -

Este ejemplo ordena primero las ventas por Fecha de venta- a continuación, para cada Fecha de venta, ordena las ventas por Factura no. Pero no hay que confundir ese ejemplo con la siguiente consulta:

SELECT * FROM ORDEN DE VENTAS POR InvoiceNo, Fecha de Venta -

Esta consulta ordena primero las ventas por FACTURA NO. Luego, para cada diferente Factura no, la consulta ordena las ventas por Fecha de venta. Esto probablemente no producirá el resultado deseado, ya que es poco probable que existan múltiples fechas de venta para un solo número de factura.

La siguiente consulta es un ejemplo más de cómo SQL puede devolver datos:

SELECT * FROM orden de venta por vendedor, Fecha de Venta -

Este ejemplo primeros pedidos por Vendedor y luego por Fecha de venta. Después nos fijamos en los datos en ese orden, es posible que desee invertir, como sigue:

SELECT * FROM ORDEN DE VENTAS POR Fecha de Venta, Vendedor -

Este ejemplo ordena las filas primera por Fecha de venta y luego por Vendedor.

Todos estos ejemplos de pedidos están en orden ascendente (ASC) Orden, que es el orden predeterminado. El último SELECT muestra las ventas anteriores primero - y, dentro de una fecha determinada, muestra las ventas de 'Adams' antes de 'Panadero'. Si prefiere descendente (DESC) Pedido, puede especificar el orden de una o más de las columnas de orden, de la siguiente manera:

SELECT * FROM SalesOrder POR Fecha de Venta DESC, Vendedor de ASC -

Este ejemplo especifica un orden descendente de las fechas de venta, que muestra las más recientes ventas de primera, y un orden ascendente para los vendedores, poniéndolos en orden alfabético. Eso te dará una mejor idea de cómo el rendimiento de Bennett acumula en contra de la de los otros vendedores.




» » » » Cómo utilizar el grupo por, tener, y el orden de las cláusulas SQL