Örnek: Son bir ayda yapılan ödemelerin ortalama tutarını ekrana yazdıran procedure yazalım.
create or replace procedure sp_sumpayment()
language plpgsql
as $$
declare tutar int:=0;
begin
select sum(amount) into tutar from
payment where payment_date between interval '-1' month+current_date and current_date;
if tutar!=null then
raise notice 'son bir aydaki tutar:%',tutar;
else
raise notice 'son bir ayda ödeme yapılmamış';
end if;
end; $$
if tutar!=null then
raise notice 'son bir aydaki tutar:%',tutar;
else
raise notice 'son bir ayda ödeme yapılmamış';
end if;
end; $$
call sp_sumpayment()
Örnek: Verilen filmde oynayan actor sayısı, filmlerde oynayan ortalama aktor sayısından az ise ekrana düşük bütçeli film , fazla ise yüksek bütçeli film yazdıran procedure yazalım.
create or replace procedure sp_filmactor(film_adi varchar)
language plpgsql
as $$
declare actor_sayisi int:=0;
declare ort_actor_sayisi int:=0;
begin
select avg(actor_sayi_list) into ort_actor_sayisi from (
select count(*) as actor_sayi_list from actor a
inner join film_actor fa on fa.actor_id=a.actor_id
group by fa.film_id) as aa;
select count(*) into actor_sayisi from film fl
inner join film_actor fa on fa.film_id=fl.film_id
where title=film_adi;
language plpgsql
as $$
declare actor_sayisi int:=0;
declare ort_actor_sayisi int:=0;
begin
select avg(actor_sayi_list) into ort_actor_sayisi from (
select count(*) as actor_sayi_list from actor a
inner join film_actor fa on fa.actor_id=a.actor_id
group by fa.film_id) as aa;
select count(*) into actor_sayisi from film fl
inner join film_actor fa on fa.film_id=fl.film_id
where title=film_adi;
if actor_sayisi< ort_actor_sayisi then
raise notice 'Düşük bütçeli film';
else
raise notice 'Yüksek bütçeli film';
end if;
end; $$
raise notice 'Düşük bütçeli film';
else
raise notice 'Yüksek bütçeli film';
end if;
end; $$
call sp_filmactor('Airport Pollock')
Örnek: son 1 hafta içinde yapılan kiralama işlemlerinde, en çok kiralanan ilk filmin adını getiren procedure yazalım.
create or replace procedure sp_filmrental()
language plpgsql
as $$
declare filmadi varchar;
begin
language plpgsql
as $$
declare filmadi varchar;
begin
select title into filmadi from rental r
inner join inventory i on i.inventory_id=r.inventory_id
inner join film fl on fl.film_id=i.film_id
where rental_date between interval '-7' day +current_date and current_date
group by fl.title
order by count(*) desc limit 1;
inner join inventory i on i.inventory_id=r.inventory_id
inner join film fl on fl.film_id=i.film_id
where rental_date between interval '-7' day +current_date and current_date
group by fl.title
order by count(*) desc limit 1;
if filmadi!=null then
raise notice 'en çok kiralanan film:%',filmadi;
else
raise notice 'son bir haftada kiralanan film yok';
end if;
raise notice 'en çok kiralanan film:%',filmadi;
else
raise notice 'son bir haftada kiralanan film yok';
end if;
end; $$
call sp_filmrental()
call sp_filmrental()
Hiç yorum yok:
Yorum Gönder