4
Usando funciones para manipular
        grupos de datos
Objetivos

 Al completar esta lección usted podrá realizar los
 siguientes puntos:
 •       Identificar las funciones disp...
?Como trabajan las funciones de grupo?

 Las funciones de grupo opera sobre un conjunto de
 registros y se retorna un solo...
Funciones de grupo
 Funciones básicas que realizan operaciones a un
 grupo de registros en especifico:
 •       AVG
 •    ...
Sintaxis Básica

SELECT   [ column ], group_function(column) [, ...]
FROM     from_item
[WHERE   condition]
[GROUP   BY co...
Usando las funciones AVG, MAX, MIN y SUM

SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary)
FROM   employees
WHERE...
Usando las funciones MAX y MIN

 Puede utilizar las funciones MAX y MIN para los tipos de
 datos numéricos, caracteres y f...
Usando la funciones COUNT
         La función COUNT(*) retorna la cantidad total de registros que
1
         se encuentran...
Usando la palabra DISTINCT

 • Usando la palabra DISTINCT se eliminan todos los
   valores duplicados.
 • Puede emplear la...
Usando la palabra DISTINCT
  La siguiente consulta cuenta cuantos departamentos
  se encuentran asignados en la tabla empl...
Funciones de grupo y valores NULL
          Las funciones de grupo ignoran los valores NULL.
1

          SELECT AVG(commi...
Creando grupo de datos
    department_id | salary
   ---------------+--------
               10 |   4400
               20...
Sintaxis Básica

 SELECT   [ column ], group_function(column) [, ...]
 FROM     from_item
 [WHERE   condition]
 [GROUP   B...
Usando la cláusula GROUP BY
  Todas las columnas dentro de la sentencia SELECT no
  deben estar en la función de grupo si ...
Usando la cláusula GROUP BY
  Las columnas dentro la cláusula GROUP BY no tienen
  que estar dentro de la sentencia SELECT...
Agrupando por mas de una columna
 department_id |   job_id   | salary
---------------+------------+--------
            10...
Usando la cláusula GROUP BY con múltiples
                columnas
 SELECT     department_id, job_id, SUM(salary)
 FROM   ...
Consultas mal escritas usando las
                 funciones de grupo
  Toda columna o expresión que no se encuentra dentr...
Consultas mal escritas usando las
                 funciones de grupo
  • No se puede usar condiciones en la cláusula WHER...
Restringiendo el resultado de los grupo con
            la cláusula HAVING
  • Filtra por registros agrupados.
  • Muestra...
Usando la cláusula HAVING

 SELECT     department_id, MAX(salary)
 FROM       employees
 GROUP BY   department_id
 HAVING ...
Usando la cláusula HAVING

 SELECT     job_id, SUM(salary) AS quot;PAYROLL“
 FROM       employees
 WHERE      job_id NOT L...
Funcione jerárquicas de grupo

  No se puede usar las funciones de grupo en modo
  jerárquico.

 SELECT   MAX(AVG(salary))...
Resumen
  En esta lección, usted aprendió como:
  • Usar las funciones básicas de grupo en SQL.
     – COUNT
     – MAX
  ...
Próxima SlideShare
Cargando en…5
×

Postgre S Q L 4

1.793 visualizaciones

Publicado el

Lección 4 de tutorial de Postgresql

Publicado en: Tecnología, Empresariales
0 comentarios
1 recomendación
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
1.793
En SlideShare
0
De insertados
0
Número de insertados
31
Acciones
Compartido
0
Descargas
90
Comentarios
0
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

Postgre S Q L 4

  1. 1. 4 Usando funciones para manipular grupos de datos
  2. 2. Objetivos Al completar esta lección usted podrá realizar los siguientes puntos: • Identificar las funciones disponibles. • Describir como usar una función de grupo. • Agrupar datos mediante la cláusula GROUP BY. • Incluir o excluir datos agrupados mediante el uso de la cláusula HAVING. L -- 2 L2
  3. 3. ?Como trabajan las funciones de grupo? Las funciones de grupo opera sobre un conjunto de registros y se retorna un solo resultado por grupo. department_id | salary ---------------+-------- 80 | 14000 80 | 13500 80 | 12000 80 | 11000 80 | 10500 80 | 10000 80 | 9500 max 80 | 9000 ------- 80 | 8000 80 | 7500 24000 80 | 7000 (1 row) 80 | 10000 80 | 9500 80 | 9000 Salario mas alto de 80 | 8000 la tabla employees. 80 | 7500 80 | 7000 80 | 10500 (107 rows) L -- 3 L3
  4. 4. Funciones de grupo Funciones básicas que realizan operaciones a un grupo de registros en especifico: • AVG • COUNT • MAX • MIN • SUM L -- 4 L4
  5. 5. Sintaxis Básica SELECT [ column ], group_function(column) [, ...] FROM from_item [WHERE condition] [GROUP BY column] [ORDER BY column]; L -- 5 L5
  6. 6. Usando las funciones AVG, MAX, MIN y SUM SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary) FROM employees WHERE department_id = 80; avg | max | min | sum -----------------------+-------+------+-------- 8955.8823529411764706 | 14000 | 6100 | 304500 (1 row) L -- 6 L6
  7. 7. Usando las funciones MAX y MIN Puede utilizar las funciones MAX y MIN para los tipos de datos numéricos, caracteres y fechas. SELECT MAX(hire_date), MIN(hire_date) FROM employees WHERE department_id = 80; max | min ------------+------------ 2000-04-21 | 1996-01-30 (1 row) L -- 7 L7
  8. 8. Usando la funciones COUNT La función COUNT(*) retorna la cantidad total de registros que 1 se encuentran en una tabla. SELECT COUNT(*) FROM employees; count ------- 107 La función COUNT(expr) retorna la cantidad total de registros 2 NO NULL que se encuentran en una tabla. SELECT COUNT(commission_pct) FROM employees; count ------- 35 L -- 8 L8
  9. 9. Usando la palabra DISTINCT • Usando la palabra DISTINCT se eliminan todos los valores duplicados. • Puede emplear la palabra DISTINCT dentro de cualquier función. • Retorna todo los elementos que NO son del tipo NULL. L -- 9 L9
  10. 10. Usando la palabra DISTINCT La siguiente consulta cuenta cuantos departamentos se encuentran asignados en la tabla employees. SELECT COUNT(DISTINCT department_id) FROM employees; count ------- 11 (1 row) L -- 10 L 10
  11. 11. Funciones de grupo y valores NULL Las funciones de grupo ignoran los valores NULL. 1 SELECT AVG(commission_pct) FROM employees; avg ------------------------ 0.22285714285714285714 La función COALESCE obliga a las funciones de grupo que 2 incluya los valores de tipo NULL. SELECT AVG(COALESCE(commission_pct, 0)) FROM employees; avg ------------------------ 0.07289719626168224299 L -- 11 L 11
  12. 12. Creando grupo de datos department_id | salary ---------------+-------- 10 | 4400 20 | 13000 20 | 6000 30 | 3100 department_id | avg 30 | 11000 ---------------+------------------------ 30 | 2500 30 | 2900 10 | 4400.0000000000000000 40 | 6500 20 | 9500.0000000000000000 50 | 2500 30 | 4150.0000000000000000 50 | 8000 40 | 6500.0000000000000000 50 | 8200 50 | 3475.5555555555555556 60 | 6000 60 | 9000 60 | 5760.0000000000000000 70 | 10000 70 | 10000.0000000000000000 80 | 9500 80 | 8955.8823529411764706 80 | 9000 90 | 19333.333333333333 80 | 8000 100 | 8600.0000000000000000 90 | 24000 110 | 10150.0000000000000000 90 | 17000 90 | 17000 | 7000.0000000000000000 100 | 6900 (12 rows) 100 | 9000 100 | 12000 Promedio del salario por cada 110 | 8300 departamento y por cada empleado del 110 | 12000 (107 rows) mismo departamento L -- 12 L 12
  13. 13. Sintaxis Básica SELECT [ column ], group_function(column) [, ...] FROM from_item [WHERE condition] [GROUP BY column] [ORDER BY column]; Permite dividir los registros de una tabla en pequeños grupos usando la cláusula GROUP BY. • No puedes utilizar Alias dentro de la cláusula GROUP BY. • Solo puedes incluir el nombre de la columna dentro de la cláusula GROUP BY. • Si no usas funciones de grupo no podrás apreciar resultados individuales. L -- 13 L 13
  14. 14. Usando la cláusula GROUP BY Todas las columnas dentro de la sentencia SELECT no deben estar en la función de grupo si no en la clausúrala GROUP BY. SELECT department_id, AVG(salary) FROM employees GROUP BY department_id ORDER BY department_id; department_id | avg ---------------+------------------------ 10 | 4400.0000000000000000 20 | 9500.0000000000000000 30 | 4150.0000000000000000 40 | 6500.0000000000000000 50 | 3475.5555555555555556 60 | 5760.0000000000000000 (12 rows) L -- 14 L 14
  15. 15. Usando la cláusula GROUP BY Las columnas dentro la cláusula GROUP BY no tienen que estar dentro de la sentencia SELECT . SELECT AVG(salary) FROM employees GROUP BY department_id; avg ------------------------ 7000.0000000000000000 10150.0000000000000000 8600.0000000000000000 19333.333333333333 8955.8823529411764706 10000.0000000000000000 5760.0000000000000000 3475.5555555555555556 6500.0000000000000000 4150.0000000000000000 (12 rows) L -- 15 L 15
  16. 16. Agrupando por mas de una columna department_id | job_id | salary ---------------+------------+-------- 10 | AD_ASST | 4400 30 | PU_CLERK | 3100 30 | PU_CLERK | 2800 30 | PU_CLERK | 2500 30 | PU_CLERK | 2600 department_id | job_id | sum 30 | PU_CLERK | 2900 ---------------+------------+-------- 50 | SH_CLERK | 3800 10 | AD_ASST | 4400 50 | SH_CLERK | 3000 20 | MK_MAN | 13000 50 | SH_CLERK | 3400 20 | MK_REP | 6000 50 | SH_CLERK | 4100 30 | PU_CLERK | 13900 50 | SH_CLERK | 4200 30 | PU_MAN | 11000 50 | SH_CLERK | 2800 40 | HR_REP | 6500 50 | SH_CLERK | 2500 50 | SH_CLERK | 64300 60 | IT_PROG | 9000 50 | ST_CLERK | 55700 60 | IT_PROG | 4200 50 | ST_MAN | 36400 60 | IT_PROG | 4800 60 | IT_PROG | 28800 60 | IT_PROG | 4800 70 | PR_REP | 10000 60 | IT_PROG | 6000 80 | SA_MAN | 61000 100 | FI_ACCOUNT | 7700 (20 rows) 100 | FI_ACCOUNT | 6900 100 | FI_ACCOUNT | 9000 Promedio del salario por cada 100 | FI_ACCOUNT | 8200 100 | FI_ACCOUNT | 7800 departamento y por cada empleado 100 | FI_MGR | 12000 del mismo cargo y departamento (107 rows) L -- 16 L 16
  17. 17. Usando la cláusula GROUP BY con múltiples columnas SELECT department_id, job_id, SUM(salary) FROM employees GROUP BY department_id, job_id ORDER BY department_id; department_id | job_id | sum ---------------+------------+-------- 10 | AD_ASST | 4400 20 | MK_MAN | 13000 20 | MK_REP | 6000 30 | PU_CLERK | 13900 30 | PU_MAN | 11000 40 | HR_REP | 6500 50 | SH_CLERK | 64300 50 | ST_CLERK | 55700 50 | ST_MAN | 36400 60 | IT_PROG | 28800 70 | PR_REP | 10000 80 | SA_MAN | 61000 (20 rows) L -- 17 L 17
  18. 18. Consultas mal escritas usando las funciones de grupo Toda columna o expresión que no se encuentra dentro de una función de grupo, debe estar dentro de la cláusula GROUP BY. SELECT department_id, SUM(salary) FROM employees; ERROR: column quot;employees.department_idquot; must appear in the GROUP BY clause or be used in an aggregate function L -- 18 L 18
  19. 19. Consultas mal escritas usando las funciones de grupo • No se puede usar condiciones en la cláusula WHERE para restringir grupos. • Use la cláusula HAVING para restringir los grupos. • No use las funciones de grupo dentro de la cláusula WHERE. SELECT department_id, job_id, AVG(salary) FROM employees WHERE AVG(salary) > 1000 GROUP BY department_id, job_id ORDER BY department_id; ERROR: aggregates not allowed in WHERE clause L -- 19 L 19
  20. 20. Restringiendo el resultado de los grupo con la cláusula HAVING • Filtra por registros agrupados. • Muestra la coincidencia definida en la cláusula HAVING. SELECT [ column ], group_function(column) [, ...] FROM from_item [WHERE condition] [GROUP BY column] [HAVING condition [, ...]] [ORDER BY column]; L -- 20 L 20
  21. 21. Usando la cláusula HAVING SELECT department_id, MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary) > 10000; department_id | max ---------------+------- 110 | 12000 100 | 12000 90 | 24000 80 | 14000 30 | 11000 20 | 13000 (6 rows) L -- 21 L 21
  22. 22. Usando la cláusula HAVING SELECT job_id, SUM(salary) AS quot;PAYROLL“ FROM employees WHERE job_id NOT LIKE '%REP%‘ GROUP BY job_id HAVING SUM(salary) > 13000 ORDER BY SUM(salary); job_id | PAYROLL ------------+--------- PU_CLERK | 13900 AD_PRES | 24000 IT_PROG | 28800 AD_VP | 34000 ST_MAN | 36400 FI_ACCOUNT | 39600 ST_CLERK | 55700 SA_MAN | 61000 SH_CLERK | 64300 (9 rows) L -- 22 L 22
  23. 23. Funcione jerárquicas de grupo No se puede usar las funciones de grupo en modo jerárquico. SELECT MAX(AVG(salary)) FROM employees GROUP BY department_id; ERROR: aggregate function calls may not be nested L -- 23 L 23
  24. 24. Resumen En esta lección, usted aprendió como: • Usar las funciones básicas de grupo en SQL. – COUNT – MAX – MIN – AVG • Escribir consultas usando la cláusula GROUP BY. • Escribir consultas usando la cláusula HAVING. L -- 24 L 24

×