create view nb_total_familles as
  select count(*) as nb_total_familles from famille;

create view nb_total_articles as
  select count(*) as nb_total_articles from article;

create view nb_total_tickets as
  select count(*) as nb_total_tickets from ticket;

create view nb_total_adherents as
  select count(*) as nb_total_adherents from adherent;

create materialized view detail_ticket as
select t.id as ticket_id, t.date_ticket, t.mode_rglt,
  h.id as adherent_id, h.codepostal, h.genre,
  round(sum(l.total), 2) as total
from ticket t
join ligne l on l.ticket_id = t.id
join adherent h on h.id = t.adherent_id
group by t.id, h.id;

create materialized view detail_vente as
select t.id as ticket_id, t.date_ticket, t.mode_rglt,
  h.id as adherent_id, h.codepostal, h.genre,
  l.article_code, a.famille_code,
  round(sum(l.total), 2) as total
from ticket t
join ligne l on l.ticket_id = t.id
join adherent h on h.id = t.adherent_id
join article a on a.code = l.article_code
group by t.id, h.id, l.article_code, a.famille_code;
