Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cree una funcin de nombre launo la cual retorne el promedio aritmtico del nmero de
pginas de todos los libros
begin
select AVG (nro_paginas) into prom from libro ;
Cree una funcin de nombre launo la cual retorne el promedio aritmtico del nmero de
pginas de todos los libros cuyo nombre tenga ms de x caracteres.
begin
select AVG (nro_paginas) into prom from libro where length(nombre) > x ;
select launo(12);
Cree una funcin de nombre launo la cual retorne el promedio aritmtico del nmero de
pginas de todos los libros cuyo nombre tenga ms de x caracteres y adems hayan
sido publicados antes del mes digitado en la variable y.
begin
select AVG (nro_paginas) into prom from libro where length(nombre) > x and
to_char(fecha_publicacion,'mm') < y;
Return 'El promedio aritmtico del nmero de pginas de los libros cuyo nombre tenga
ms de '||x||' caracteres y publicados antes del mes '||y||' es: '||round(prom,2);
end
$$
Language 'plpgsql';
select launo(12,'05');
begin
return query
select * from libro;
end
$$
Language 'plpgsql';
Cree una funcin de nombre lados la cual retorne toda la informacin de los libros cuyo
nombre comience por el o los caracteres digitados en la variable x.
begin
return query
select * from libro where nombre LIKE x||'%';
end
$$
Language 'plpgsql';
Cree una funcin de nombre lados la cual retorne toda la informacin de los libros que
contengan el o los caracteres digitados en la variable x y que tenga entre y y z pginas.
create or replace function lados(x varchar, y int, z int)
returns setof libro as $$
declare
begin
return query
select * from libro where nombre LIKE '%'||x||'%' and nro_paginas between y and z;
end
$$
Language 'plpgsql';
Si digito 1: Toda la info de los libros cuyo nombre empiece por lo digitado en x.
Si digito 2: Toda la info de los libros cuyo nombre contenga por lo digitado en x.
Si digito 3: Toda la info de los libros cuyo nombre termine por lo digitado en x.
begin
IF opcion = 1 then
return query
select * from libro where nombre LIKE x||'%';
Elseif opcion = 2 then
return query
select * from libro where nombre LIKE '%'||x||'%';
Elseif opcion = 3 then
return query
select * from libro where nombre LIKE '%'||x;
End if;
end
$$
Language 'plpgsql';
Variables in - out
POR RECORD
create or replace function laseis(out "codigo libro" numeric, out "nombre del libro"
varchar, in x int)
returns setof record as $$
begin
return query
Select codigo, nombre from libro where nro_paginas > x;
end
$$
Language 'plpgsql';
POR TABLE
begin
return query
Select codigo, nombre from libro where nro_paginas > x;
end
$$
Language 'plpgsql';
Cree una funcion de nombre laocho, muestre toda la informacin de las categoras cuyo
nombre tenga ms de z caracteres en los que haya libros de ms de W paginas, muestre
adems el nombre del libro que pertenezca a dicha categora junto al nmero de paginas
Categoria nombre > z
Libros nro_paginas > w
create or replace function lacatorce(in z numeric, in w numeric, out "Codigo categoria" numeric,
out "Nombre categoria" varchar, out "nombre del libro" varchar, out "Nmero de pginas"
numeric)
returns setof record as $$
begin
return query
Select distinct categoria.codigo, categoria.nombre, libro.nombre, libro.nro_paginas
from libro, categoria
where libro.cod_cat = categoria.codigo
and length(categoria.nombre) > z
and libro.nro_paginas > w;
end
$$
Language 'plpgsql';
CONSULTA GROUP BY
Muestre la cantidad de libros que hay en cada categora junto a toda la informacin de
ella.
create or replace function laquince(out "Codigo categoria" numeric, out "Nombre categoria"
varchar, out "Cantidad" bigint)
returns setof record as $$
begin
return query
Select categoria.*, count(*)
from libro, categoria
where libro.cod_cat = categoria.codigo
group by categoria.codigo, categoria.nombre;
end
$$
Language 'plpgsql';
create or replace function laquince(out "Codigo categoria" numeric, out "Nombre categoria"
varchar, out "Cantidad" bigint, in x numeric)
returns setof record as $$
begin
return query
Select categoria.*, count(*)
from libro, categoria
where libro.cod_cat = categoria.codigo
group by categoria.codigo, categoria.nombre
having count(*)>x;
end
$$
Language 'plpgsql';