Professional Documents
Culture Documents
Práctica 2
Funciones Analíticas de SQL:
Extensiones al group by
Contenidos
group by
select
G DEPA SUM(WAGES)
- ---- ----------
F POL 9800
F WEL 7000
M INT 65000
M POL 77900
M WEL 45000
Texas
varones
ventas
state
Orlando
mujeres
informática
gender
department
! " # " # " # $ $ $ %
G DEPA SUM(WAGES)
- ---- ----------
F POL 9800
F WEL 7000
F 16800
M INT 65000
M POL 77900
M WEL 45000
M 187900
204700
! " # " # " # $ $ $ %
DEPA G SUM(WAGES)
---- - ----------
INT M 65000
INT 65000
POL F 9800
POL M 77900
POL 87700
WEL F 7000
WEL M 45000
WEL 52000
204700
! " # " # " # $ $ $ %
! " # " # " # $ $ $ %
select gender, department, state, sum(wages)
from department join employee on department = fk_department
group by rollup(department, gender, state)
order by 1,2,3;
G DEPA ST SUM(WAGES) G DEPA ST SUM(WAGES)
- ---- -- ---------- - ---- -- ----------
F POL MO 9800 M POL NC 7500
F POL 9800 M POL TX 12000
F WEL MA 7000 M POL 77900
F WEL 7000 M POL VA 9000
F WEL NY M POL NY 10400
M INT ME 14000 M POL CA 12500
M INT MO 11000 M WEL GE 13000
M INT NE 22500 M WEL IA 10000
M INT NY 8000 M WEL IL 13500
M INT TX M WEL 45000
M INT VT 9500 M WEL OH 8500
M INT 65000 INT 65000
M POL AR 15000 POL 87700
M POL MA 11500 WEL 52000
204700
! " # " # " # $ $ $ %
! " # " # " # $ $ $ %
select department, gender, state, sum(wages)
from department join employee on department = fk_department
group by department, rollup(gender, state)
order by 1,2,3;
DEPA G ST SUM(WAGES) DEPA G ST SUM(WAGES)
---- - -- ---------- ---- - -- ----------
INT M ME 14000 POL M NY 10400
INT M MO 11000 POL M TX 12000
INT M NE 22500 POL M VA 9000
INT M NY 8000 POL M 77900
INT M TX POL 87700
INT M VT 9500 WEL F MA 7000
INT M 65000 WEL F NY
INT 65000 WEL F 7000
POL F MO 9800 WEL M GE 13000
POL F 9800 WEL M IA 10000
POL M AR 15000 WEL M IL 13500
POL M CA 12500 WEL M OH 8500
POL M MA 11500 WEL M 45000
POL M NC 7500 WEL 52000
! " % & '
select
gender, department, sum(wages),
grouping(gender) as gdr,
grouping(department) as dept
from department join employee on department = fk_department
group by cube(gender, department)
order by 1,2;
grouping(exp)
exp
! " % & '
! " % & '
! " % & '
select
case when (grouping(department)= 1 and grouping(gender)= 1)
then 'Sueldos totales'
else gender end sexo,
case when (grouping(department)= 1 and grouping(gender)= 0)
then 'Total por sexo'
else department end departamento,
sum(wages) suma_sueldos
from department join employee on department = fk_department
group by rollup(gender, department);