Tecnología

Inicio

Los diferentes criterios para el Grupo de Oracle SQL de Count

Los diferentes criterios para el Grupo de Oracle SQL de Count


Oracle proporciona un número de maneras de escribir y utilizar las funciones COUNT que incluyen una cláusula GROUP BY. Aunque la función COUNT en Procedimiento Structured Query Language Lenguaje-- PL / SQL - tiene una sintaxis estándar y la definición, aplicación de diferentes parámetros en relación con la cláusula GROUP BY permite COUNT / GRUPO POR consultas para producir una variedad de sencilla de resultados complejos . El conocimiento de los diferentes criterios - las normas - para escribir COUNT / GROUP BY consultas le ayudará a combinar estos elementos en las instrucciones correctas y coherentes PL / SQL.

Hechos

La función COUNT cuenta filas de base de datos de acuerdo con los parámetros que se especifiquen en un SELECT | DE | DONDE consulta y devuelve como resultado un número de filas que no son nulos, o aquellas filas que contienen valores. Una cláusula GROUP BY ordena a través de los valores devuelve la consulta y organiza los resultados en función de criterios suministrados por el usuario. La sintaxis básica para este tipo de consulta es:

SELECT COUNT (expresión)
a partir de tablas
DONDE predicados;
GRUPO POR predicados;

Identificación

Cada criterio implica normas relativas a ambas expresiones agregadas y no agregadas, así como las funciones de agregado. Una expresión agregado es una declaración, tal como una instrucción SELECT, que utiliza una función de agregado como COUNT para devolver un resultado único de acuerdo con grupos de filas, en lugar de filas individuales. expresiones no agregadas son elementos tales como nombres de las filas de base de datos, por ejemplo "nombre-cliente" que son el objetivo de una función agregada o expresión. Un criterio general para la escritura es que todo lo que no agregados expresión o expresiones que incluye en su cláusula SELECT, debe también debe también incluir en la cláusula GROUP BY:

-cliente SELECT, COUNT (DISTINCT ciudad) como "ciudades diferenciados"
FROM clientes
GROUP BY-cliente;

Criterios adicionales

Oracle SQL define una serie de variaciones en el criterio general para la creación de COUNT / GRUPO POR consultas. En primer lugar, no se puede incluir una función de agregado en una cláusula GROUP BY. Por ejemplo, si se escribe una cláusula GROUP BY como "GROUP BY cust_nbr, COUNT (order_nbr);" el resultado será un mensaje de error. Además, si la instrucción SELECT incluye una constante o una función escalar, puede incluir o excluir cualquiera de su cláusula GROUP BY, sin efecto sobre los resultados. Finalmente, Oracle proporciona dos métodos para escribir una cláusula GROUP BY cuando la instrucción SELECT concatena dos columnas de base de datos. Ambos de los ejemplos siguientes lograr el mismo resultado:

manager_emp_id SELECT || job_id, COUNT (*)
DESDE empleado
GRUPO POR manager_emp_id || job_id; O GRUPO POR manager_emp_id, job_id;

excepciones

Dos criterios proporcionan excepciones a la regla general. La primera es una excepción que le permite excluir una expresión no agregados instrucción SELECT en la cláusula GROUP BY mediante el uso de una "visión en línea" construir - una sub consulta dentro de la consulta - en una FROM.

En lugar de:
ROWNUM SELECT, cust_nbr, COUNT (order_nbr)
DE cust_order
GRUPO POR ROWNUM, cust_nbr;

Utilizar:
SELECT ROWNUM, v. *
DE (cust_nbr SELECT, COUNT (order_nbr)
DE GRUPO POR cust_order cust_nbr) v;

El segundo criterio excepción establece que se puede tener una instrucción SELECT vacía y sólo incluyen la expresión no agregados en su cláusula GROUP BY. Sin embargo, si se escribe la declaración de esta manera, los resultados mostrarán el recuento sin indicación de la fila de base de datos que ha seleccionado para contar.

SELECT COUNT (order_nbr)
DE cust_order
GRUPO POR cust_nbr;

resultados:
COUNT (ORDER_NBR)

8
4
6
2