funciones ii

15
<Nombre del curso> <Número de lección>-1 5 Copyright © Oracle Corporation, 2001. Todos los derechos reservados. Agrupando Datos Utilizando Funciones de Grupo 5-2 Copyright © Oracle Corporation, 2001. Todos los derechos reservados. Objetivos Al finalizar esta lección, debería estar capacitado para: Identificar las funciones de grupo disponibles Describir el uso de las funciones de grupo Agrupar datos utilizando la cláusula GROUP BY Incluir o excluir filas agrupadas utilizando la cláusula HAVING

Upload: jose-evanan

Post on 02-Jan-2016

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Funciones II

<Nombre del curso> <Número de lección> -1

5Copyright © Oracle Corporation, 2001. Todos los derechos reservados.

Agrupando DatosUtilizando Funciones de Grupo

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

Objetivos

Al finalizar esta lección, debería estar capacitadopara:

• Identificar las funciones de grupo disponibles

• Describir el uso de las funciones de grupo

• Agrupar datos utilizando la cláusula GROUP BY

• Incluir o excluir filas agrupadas utilizando la clá usula HAVING

Page 2: Funciones II

<Nombre del curso> <Número de lección> -2

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

¿Qué Son Funciones de Grupo?Las funciones de grupo operan sobre juegos de filas para proporcionar un resultado por grupo.

EMPLOYEES

El salario máximo enla tabla EMPLOYEES.

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

Tipos de Funciones de Grupo

• AVG

• COUNT

• MAX

• MIN

• STDDEV

• SUM

• VARIANCE

Page 3: Funciones II

<Nombre del curso> <Número de lección> -3

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

SELECT [column,] group_function(column), ...FROM table[WHERE condition][GROUP BY column][ORDER BY column];

Sintaxis de las Funciones de Grupo

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

SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)

FROM employeesWHERE job_id LIKE '%REP%';

Uso de las Funciones AVGy SUM

Puede utilizar AVGy SUMpara datos numéricos.

Page 4: Funciones II

<Nombre del curso> <Número de lección> -4

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

Uso de las Funciones MIN y MAX

Puede utilizar MIN y MAXpara cualquier tipo de dato.

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

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

SELECT COUNT(*)FROM employeesWHERE department_id = 50;

Uso de la Función COUNT

COUNT(*) devuelve el número de filas de una tabla.

Page 5: Funciones II

<Nombre del curso> <Número de lección> -5

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

Uso de la Función COUNT

• COUNT(expr) devuelve el número de filas con valores no nulos para expr.

• Visualice el número de valores de departamento de l a tabla EMPLOYEES, excluyendo los valores nulos.

SELECT COUNT(commission_pct)FROM employeesWHERE department_id = 80;

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

SELECT COUNT(DISTINCT department_id)FROM employees;

Uso de la Palabra Clave DISTINCT

• COUNT(DISTINCT expr) devuelve el número de valores distintos no nulos de expr.

• Visualice el número de valores de departamento distintos de la tabla EMPLOYEES.

Page 6: Funciones II

<Nombre del curso> <Número de lección> -6

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

SELECT AVG(commission_pct)FROM employees;

Funciones de Grupo y Valores Nulos

Las funciones de grupo ignoran los valores nulos de la columna.

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

SELECT AVG(NVL(commission_pct, 0))FROM employees;

Uso de la Función NVLcon Funciones de Grupo

La función NVL fuerza a las funciones de grupo a que incluyan valores nulos.

Page 7: Funciones II

<Nombre del curso> <Número de lección> -7

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

Creación de Grupos de Datos

EMPLOYEES

El salariomediode la tabla

EMPLOYEESpara cada

departamento.

4400

9500

3500

6400

10033

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

SELECT column, group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][ORDER BY column];

Creación de Grupos de Datos: Sintaxis de la Cláusula GROUP BY

Divida las filas de una tabla en grupos más pequeño sutilizando la cláusula GROUP BY.

Page 8: Funciones II

<Nombre del curso> <Número de lección> -8

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

SELECT department_id, AVG(salary)FROM employeesGROUP BY department_id ;

Uso de la Cláusula GROUP BY

Todas las columnas de la lista SELECTque no estén en lasfunciones de grupo deben estar en la cláusula GROUP BY.

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

Uso de la Cláusula GROUP BY

La columna GROUP BYno tiene que estar en la lista SELECT.

SELECT AVG(salary)FROM employeesGROUP BY department_id ;

Page 9: Funciones II

<Nombre del curso> <Número de lección> -9

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

Agrupación por más de una Columna

EMPLOYEES

“Sume los salarios de

la tablaEMPLOYEES

para cada cargo, agrupado por departamento.

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

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

Uso de la Cláusula GROUP BYenVarias Columnas

Page 10: Funciones II

<Nombre del curso> <Número de lección> -10

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

Consultas no VálidasUtilizando Funciones de Grupo

Toda columna o expresión de la lista SELECTque nosea una función agregada debe estar en lacláusula 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-20 Copyright © Oracle Corporation, 2001. Todos los derechos reservados.

Consultas no VálidasUtilizando Funciones de Grupo

• No se puede utilizar la cláusula WHEREpara restringir grupos.

• Utilice la cláusula HAVING para restringir grupos.

• No se pueden utilizar funciones de grupo en la cláu sula WHERE.

SELECT department_id, AVG(salary)FROM employeesWHERE AVG(salary) > 8000GROUP BY department_id;

WHERE AVG(salary) > 8000*

ERROR at line 3:ORA-00934: group function is not allowed here

Page 11: Funciones II

<Nombre del curso> <Número de lección> -11

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

Exclusión de Resultados de Grupo

El salariomáximo

por departamentocuando esmayor que

$10.000

EMPLOYEES

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

SELECT column, group_functionFROM table[WHERE condition][GROUP BY group_by_expression][HAVING group_condition][ORDER BY column];

Exclusión de Resultados de Grupo: La Cláusula HAVING

Utilice la cláusula HAVING para restringir grupos:

1. Las filas se agrupan.

2. Se aplica la función de grupo.

3. Se muestran los grupos que coinciden con la cláus ula HAVING.

Page 12: Funciones II

<Nombre del curso> <Número de lección> -12

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

Uso de la Cláusula HAVING

SELECT department_id, MAX(salary)FROM employeesGROUP BY department_idHAVING MAX(salary)>10000 ;

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

SELECT job_id, SUM(salary) PAYROLLFROM employeesWHERE job_id NOT LIKE '%REP%'GROUP BY job_idHAVING SUM(salary) > 13000ORDER BY SUM(salary);

Uso de la Cláusula HAVING

Page 13: Funciones II

<Nombre del curso> <Número de lección> -13

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

Anidamiento de Funciones de Grupo

Visualice el salario medio máximo.

SELECT MAX(AVG(salary))FROM employeesGROUP BY department_id;

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

SELECT column, group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][HAVING group_condition][ORDER BY column];

Resumen

En esta lección, debería haber aprendido a:

• Utilizar las funciones de grupo COUNT, MAX, MIN, AVG

• Escribir consultas que utilicen la cláusula GROUP BY

• Escribir consultas que utilicen la cláusula HAVING

Page 14: Funciones II

<Nombre del curso> <Número de lección> -14

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

Visión General de la Práctica 5

Esta práctica cubre los siguientes temas:

• Escritura de consultas que utilizan las funciones d e grupo

• Agrupación por filas para obtener más de un resulta do

• Exclusión de grupos utilizando la cláusula HAVING

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

Page 15: Funciones II

<Nombre del curso> <Número de lección> -15

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

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