Soluzione

Definizione tabella utenti e programmi

tabelle:


create table utenti(
id char(5) primary key
nome varchar(20) not null
cognome varchar(20) not null
nickname varchar(20) not null
email varchar(20) not null
stato varchar(15) not null
regione varchar(15) not null
provincia varchar(20) not null
data_nascita date not null check (data_nascita <= current_date - interval '18 years')
foto bytea
)


create table programmi(
id char(5) primary key
programmatore char(5) not null references utenti(id)
titolo varchar(20) not null
linguaggio varchar(15) not null check (linguaggio in ("Pascal", "C", "C++", "Java"))
codice varchar(8400) not null
decrizione varchar(30) not null
traduttore varchar(15) not null
versione varchar(10) not null
so_necessario varchar(20) not null
data_invio date not null
);




A) Elenco di concorrenti iscritti suddiviso per stato /regione/provincia in ordine di eta' che hanno postato un
programma sorgente nell'ultima settimana.


select
    nome, cognome, stato, regione, provincia, data_invio
from utenti, programmi
where utenti.id = programmi.programmatore and data_invio <= (current_date - interval '7 days')
order by nome, cognome;



B) Numero di programmi sorgenti postati da un certo stato, codificati in un certo linguaggio, suddivisi in
regioni.

select count(*), regione
from utenti, programmi
where utenti.id = programmi.programmatore and stato = 'boh' and linguaggio = 'mah'
group by regione
order by regione