Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Práctica 1
Repaso de SQL
Contenido
Funciones de agregación de columnas
GROUP BY y HAVING
CASE
Join externo y función COALESCE
ORDER BY
Descripción de la base de datos de prácticas
clave primaria
clave externa
1. from (joins)
2. where
3. group by
4. having
5. select
6. order by
Funciones de agregación
Número de facturas del cliente 9 con descuento no nulo...
SELECT COUNT(dto)
FROM facturas TABLA FACTURAS
CODFAC FECHA CODCLI IVA DTO
WHERE codcli = 9;
5 03/11/01 9 16 20
15 14/02/01 9 16 15
21 16/05/01 5 16 12
7 21/08/01 9 7 null
32 01/01/01 14 7 12
COUNT(dto) 19 05/12/01 9 0 15
3
Funciones de agregación
Número de facturas del cliente 9 con
descuento diferente...
TABLA FACTURAS
SELECT COUNT(DISTINCT dto)
CODFAC FECHA CODCLI IVA DTO
FROM facturas
5 03/11/01 9 16 20
WHERE codcli = 9; 15 14/02/01 9 16 15
21 16/05/01 5 16 12
7 21/08/01 9 7 null
32 01/01/01 14 7 12
19 05/12/01 9 0 15
COUNT(DISTINCT dto)
2
Funciones de agregación
Número de facturas del cliente 9 ...
SELECT COUNT(*)
TABLA FACTURAS
FROM facturas
CODFAC FECHA CODCLI IVA DTO
WHERE codcli = 9;
5 03/11/01 9 16 20
15 14/02/01 9 16 15
21 16/05/01 5 16 12
7 21/08/01 9 7 null
32 01/01/01 14 7 12
19 05/12/01 9 0 15
COUNT(*)
4
Funciones de agregación
GROUP BY
GROUP BY y HAVING
TABLA FACTURAS
SELECT codcli, COUNT(*)
CODFAC FECHA CODCLI IVA DTO
FROM facturas 5 03/11/01 9 16 20
WHERE iva >= 7 15 14/02/01 5 16 15
GROUP BY codcli 21 16/05/01 5 16 12
codcli COUNT(*)
( 16 + 7 ) / 2 = 11,5 NO
5 2
( 16 + 16 ) / 2 = 16 SI
GROUP BY y HAVING
GROUP BY y HAVING
CASE
CASE WHEN expresión1 THEN ret1
WHEN expresión2 THEN ret2
…
[ELSE retN]
END
SELECT codfac,
CASE WHEN iva = 16 THEN ‘normal’
WHEN iva = 7 THEN ‘reducido’
ELSE ‘otros’
END
FROM facturas
WHERE fecha > to_date(’01-ABR-2002’, ‘DD-MON-YYYY);
Nota:
La expresión estándar CASE es más general que la función específica de Oracle DECODE()
Nota:
La función estándar COALESCE() es más general que la función específica de Oracle NVL()
Descripción de la BD de prácticas
1,n 1,1
DEPARTMENT belongs_to EMPLOYEE
1,n 1,n
buys_glasses buys_tools
1,1 1,1
GLASSES EMP_TOOLS
Descripción de la BD
create table department
(department varchar2(4) primary key,
department_name varchar2(20));
Descripción de la BD
create table glasses
(fk_payroll_number number(4),
purchase_date date,
optician varchar2(20),
cost number(5,2),
check_number varchar2(10),
primary key (fk_payroll_number, purchase_date),
foreign key (fk_payroll_number) references employee on delete cascade);