Está en la página 1de 15

Agrupando Datos Utilizando Funciones de Grupo

5
Objetivos

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Al finalizar esta leccin, debera estar capacitado para:

Identificar las funciones de grupo disponibles Describir el uso de las funciones de grupo Agrupar datos utilizando la clusula GROUP BY Incluir o excluir filas agrupadas utilizando la clusula HAVING

5-2

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-1

Qu Son Funciones de Grupo?


Las funciones de grupo operan sobre juegos de filas para proporcionar un resultado por grupo.
EMPLOYEES

El salario mximo en la tabla EMPLOYEES.

5-3 Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Tipos de Funciones de Grupo


AVG COUNT MAX MIN STDDEV SUM VARIANCE

5-4

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-2

Sintaxis de las Funciones de Grupo

SELECT FROM [WHERE [GROUP BY [ORDER BY

[column,] group_function(column), ... table condition] column] column];

5-5

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Uso de las Funciones AVG y SUM

Puede utilizar AVG y SUM para datos numricos.


SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary) FROM employees WHERE job_id LIKE '%REP%';

5-6

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-3

Uso de las Funciones MIN y MAX

Puede utilizar MIN y MAX para cualquier tipo de dato.


SELECT MIN(hire_date), MAX(hire_date) FROM employees;

5-7

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Uso de la Funcin COUNT

COUNT(*) devuelve el nmero de filas de una tabla.


SELECT COUNT(*) FROM employees WHERE department_id = 50;

5-8

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-4

Uso de la Funcin COUNT



COUNT(expr) devuelve el nmero de filas con valores no nulos para expr. Visualice el nmero de valores de departamento de la tabla EMPLOYEES, excluyendo los valores nulos.

SELECT COUNT(commission_pct) FROM employees WHERE department_id = 80;

5-9

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Uso de la Palabra Clave DISTINCT


COUNT(DISTINCT expr) devuelve el nmero de valores distintos no nulos de expr. Visualice el nmero de valores de departamento distintos de la tabla EMPLOYEES.
SELECT COUNT(DISTINCT department_id) FROM employees;

5-10

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-5

Funciones de Grupo y Valores Nulos


Las funciones de grupo ignoran los valores nulos de la columna.
SELECT AVG(commission_pct) FROM employees;

5-11

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Uso de la Funcin NVL con Funciones de Grupo


La funcin NVL fuerza a las funciones de grupo a que incluyan valores nulos.
SELECT AVG(NVL(commission_pct, 0)) FROM employees;

5-12

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-6

Creacin de Grupos de Datos


EMPLOYEES
4400 9500

El salario medio 3500 de la tabla EMPLOYEES 6400 para cada departamento.


10033

5-13

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Creacin de Grupos de Datos: Sintaxis de la Clusula GROUP BY

SELECT FROM [WHERE [GROUP BY [ORDER BY

column, group_function(column) table condition] group_by_expression] column];

Divida las filas de una tabla en grupos ms pequeos utilizando la clusula GROUP BY.

5-14

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-7

Uso de la Clusula GROUP BY

Todas las columnas de la lista SELECT que no estn en las funciones de grupo deben estar en la clusula GROUP BY.
SELECT department_id, AVG(salary) FROM employees GROUP BY department_id ;

5-15

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Uso de la Clusula GROUP BY

La columna GROUP BY no tiene que estar en la lista SELECT.


SELECT AVG(salary) FROM employees GROUP BY department_id ;

5-16

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-8

Agrupacin por ms de una Columna


EMPLOYEES

Sume los salarios de la tabla EMPLOYEES para cada cargo, agrupado por departamento.

5-17

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Uso de la Clusula GROUP BY en Varias Columnas


SELECT department_id dept_id, job_id, SUM(salary) FROM employees GROUP BY department_id, job_id ;

5-18

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-9

Consultas no Vlidas Utilizando Funciones de Grupo


Toda columna o expresin de la lista SELECT que no sea una funcin agregada debe estar en la clusula GROUP BY.
SELECT department_id, COUNT(last_name) FROM employees;

SELECT department_id, COUNT(last_name) * ERROR at line 1: ORA-00937: not a single-group group function

5-19

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Consultas no Vlidas Utilizando Funciones de Grupo



No se puede utilizar la clusula WHERE para restringir grupos. Utilice la clusula HAVING para restringir grupos. No se pueden utilizar funciones de grupo en la clusula WHERE.
department_id, AVG(salary) employees AVG(salary) > 8000 department_id;

SELECT FROM WHERE GROUP BY WHERE

AVG(salary) > 8000 * ERROR at line 3: ORA-00934: group function is not allowed here

5-20

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-10

Exclusin de Resultados de Grupo


EMPLOYEES

El salario mximo por departamento cuando es mayor que $10.000

5-21

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Exclusin de Resultados de Grupo: La Clusula HAVING


Utilice la clusula HAVING para restringir grupos: 1. Las filas se agrupan. 2. Se aplica la funcin de grupo. 3. Se muestran los grupos que coinciden con la clusula HAVING.
SELECT FROM [WHERE [GROUP BY [HAVING [ORDER BY column, group_function table condition] group_by_expression] group_condition] column];

5-22

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-11

Uso de la Clusula HAVING

SELECT FROM GROUP BY HAVING

department_id, MAX(salary) employees department_id MAX(salary)>10000 ;

5-23

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Uso de la Clusula HAVING

SELECT FROM WHERE GROUP BY HAVING ORDER BY

job_id, SUM(salary) PAYROLL employees job_id NOT LIKE '%REP%' job_id SUM(salary) > 13000 SUM(salary);

5-24

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-12

Anidamiento de Funciones de Grupo

Visualice el salario medio mximo.


SELECT MAX(AVG(salary)) FROM employees GROUP BY department_id;

5-25

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Resumen

En esta leccin, debera haber aprendido a:

Utilizar las funciones de grupo COUNT, MAX, MIN, AVG Escribir consultas que utilicen la clusula GROUP BY Escribir consultas que utilicen la clusula HAVING
column, group_function(column) table condition] group_by_expression] group_condition] column];

SELECT FROM [WHERE [GROUP BY [HAVING [ORDER BY

5-26

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-13

Visin General de la Prctica 5

Esta prctica cubre los siguientes temas:

Escritura de consultas que utilizan las funciones de grupo Agrupacin por filas para obtener ms de un resultado Exclusin de grupos utilizando la clusula HAVING

5-27

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

5-28

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-14

5-29

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

5-30

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-15

También podría gustarte