Files
sql/postgresql-entrypoint-initdb.d/03_views.sql
2025-11-02 07:35:49 +01:00

47 lines
1.4 KiB
SQL

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 market.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 market.ticket t
join market.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 market.ticket t
join market.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;
/*
INSERT INTO prix_historique (article_code, prix_unitaire, dates)
SELECT
article_code,
prix_unitaire,
daterange(
date(MIN(t.date_ticket)),
date(LEAD(MIN(t.date_ticket)) OVER (PARTITION BY article_code ORDER BY MIN(t.date_ticket)))
) AS dates
FROM ligne l
JOIN ticket t ON t.id = l.ticket_id
GROUP BY article_code, prix_unitaire
ORDER BY article_code, MIN(t.date_ticket);
*/