Commit a9eab874 authored by Tom HENRION's avatar Tom HENRION

ADD 6 SELECT : Last implementation

parent 23c9941c
......@@ -46,16 +46,57 @@ INNER JOIN Critere_Qualitatif cq ON cq.Id = v.Critere
Order by v.Id;
--- Afficher les vins ayant le prix le plus haut ---
SELECT DISTINCT v.Nom, MAX(v.Prix)
SELECT DISTINCT v.Nom, MAX(v.Prix) as cout_max
FROM Vin v
GROUP BY v.Nom;
--- Afficher le vin ayant le prix le plus bas ---
SELECT DISTINCT v.Nom, MIN(v.Prix)
SELECT DISTINCT v.Nom, MIN(v.Prix) as cout_min
FROM Vin v
GROUP BY v.Nom;
--- Affiche le prix total qu'a rapporter un certain vin au total---
SELECT DISTINCT v.Nom, SUM(v.Prix)
--- Affiche le prix total qu'à rapporté un vin ---
SELECT DISTINCT v.Nom, ROUND(SUM(v.Prix)::numeric, 2) as cout_total
FROM Vin v
GROUP BY v.Nom;
\ No newline at end of file
GROUP BY v.Nom;
--- Nombre de parcelles en fonction de chaque cépage (seulement pour les cépages concernant au moins 2 parcelles) ---
SELECT c.Nom as nom_cepage, COUNT(p.Numero) as nombre_parcelle
FROM Cepage c
INNER JOIN Parcelle p ON p.Cepage_parcelle = c.Nom
GROUP BY c.Nom
HAVING COUNT(p.Numero) > 1;
--- Nombre de bouteilles vendues en fonction des prix des vins (en arrondissant les prix à l'euro, pour les vins supérieurs à 10 €) ---
SELECT ROUND(v.Prix) as Prix_vin, SUM(cv.Nombre_bouteille_vendue) as nb_bouteille_vendue
FROM Circuit_Vente cv
INNER JOIN Vin v ON v.Circuit = cv.Id
GROUP BY ROUND(v.Prix)
HAVING ROUND(v.Prix) > 9;
--- Note moyenne en fonction des lieux ---
SELECT ROUND(AVG(cq.Notation),2) as Note_Moyenne, cq.Lieu
FROM Critere_Qualitatif cq
GROUP BY cq.Lieu;
--- Nombre de traitements par parcelle ---
SELECT t.parcelle as num_parcelle, COUNT(t.traitement)
FROM Traite t
GROUP BY t.parcelle
ORDER BY 1;
--- Prix du vin moyen en fonction du contenant---
SELECT co.Contenant, ROUND(AVG(v.Prix)::numeric, 2) as Prix_Moyenne
FROM Conditionnement co
INNER JOIN Vin v ON v.Conditionnement_Vin = co.Id
GROUP BY co.Contenant
ORDER BY 1;
--- Coût total des traitements et du coût de récolte utilisés sur une parcelle ---
SELECT p.Numero as num_parcelle, ROUND((SUM(t.Prix) + mr.Prix)::numeric, 2) as Prix_total
FROM Traite tr
INNER JOIN Traitement t ON t.Nom = tr.traitement
INNER JOIN Parcelle p ON p.Numero = tr.parcelle
INNER JOIN Methode_de_recolte mr ON mr.Methode_de_recolte = p.Recolte
GROUP BY p.Numero, mr.Prix
ORDER BY 1;
......@@ -330,8 +330,10 @@ CREATE TABLE Traite (
);
INSERT INTO Traite VALUES (1, 'Vitamine'),
(2, 'Vitamine'),
(1, 'Antie-fourmie'),
(2, 'Vitamine'),
(3, 'Vitamine'),
(3, 'Antie-fourmie'),
(3, 'Antie-sautrelles');
----------------------------------------------------------------------------------------------------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment