funciones ii
TRANSCRIPT
![Page 1: Funciones II](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/1.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/2.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/3.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/4.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/5.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/6.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/7.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/8.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/9.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/10.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/11.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/12.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/13.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/14.jpg)
<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](https://reader036.vdocuments.site/reader036/viewer/2022072015/55cf9b86550346d033a667ee/html5/thumbnails/15.jpg)
<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.