Questions
20
Exercices.md
Normal file
20
Exercices.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Exercices
|
||||||
|
|
||||||
|
|
||||||
|
## 2. Jointures
|
||||||
|
|
||||||
|
|
||||||
|
- 2a : Quel est l'article qui n'a jamais été commandé ?
|
||||||
|
- 2b : Quels sont les articles qui apparaissent qu'une seule fois
|
||||||
|
- 3 : Lister les articles dont la famille est absente
|
||||||
|
|
||||||
|
- 1 : Lister tous les tickets avec le nom du client. Afficher uniquement les tickets qui ont un client existant.
|
||||||
|
- 2 : Lister tous les clients et le nombre de tickets associés, même les clients qui n’ont pas encore de ticket doivent apparaître (avec 0).
|
||||||
|
- 3 : Lister tous les tickets, avec le nom du client s’il existe. Si un ticket a perdu sa référence client (valeur orpheline), il doit tout de même apparaître.
|
||||||
|
- 4 : Lister tous les clients et tous les tickets, même si la correspondance n’existe pas. Union des clients sans tickets et des tickets sans clients.
|
||||||
|
- 5 : Lister uniquement les clients qui ont acheté au moins un produit.
|
||||||
|
|
||||||
|
- 7 : Lister les produits avec leur famille, même si certains produits n’ont pas de famille renseignée.
|
||||||
|
- 8 : Lister tous les couples de clients qui habitent dans la même ville.
|
||||||
|
- 9 : Lister toutes les combinaisons possibles de familles et de clients (sans condition de jointure).
|
||||||
|
- 10 : Lister les tickets contenant au moins un produit de la famille "Boissons".
|
||||||
32
Home.md
32
Home.md
@@ -5,3 +5,35 @@
|
|||||||
- [Sous requêtes](sousrequete.md)
|
- [Sous requêtes](sousrequete.md)
|
||||||
- [Arbres](Arbres.md)
|
- [Arbres](Arbres.md)
|
||||||
- [Fonctions de fenêtrage](window.md)
|
- [Fonctions de fenêtrage](window.md)
|
||||||
|
|
||||||
|
## Exercices
|
||||||
|
|
||||||
|
Arrondir les montant à deux chiffres après la virgule.
|
||||||
|
|
||||||
|
- 1a : Quel est le nombre total de ticket ? (101 616)
|
||||||
|
- 1b : Quel est le nombre total d'adhérents ? (2439)
|
||||||
|
- 1c : Quel est le nombre total d'articles ? (1099)
|
||||||
|
- 1d : Quel est le nombre total de familles ? (159)
|
||||||
|
- 2 : Calculer le chiffre d’affaires global. (1 914 792.40)
|
||||||
|
- 3a : Pour chaque adhérent unique, afficher son nom et son nombre de ticket.
|
||||||
|
- 3b : Quel est le détail du nombre de ticket pour ceux dont le nom de famille est Lavergne ? (11 et 2)
|
||||||
|
- 3c : Quels sont les personnes qui ont exactement 72 tickets ? (Cote et Lebreton)
|
||||||
|
- 4 : Afficher l'article le plus cher et l'article le moins cher (avec leur prix). (Pistache 63 et Courgette Mini Fleur 0.3)
|
||||||
|
- 5a : Calculer le montant moyen d’un ticket. (18.84)
|
||||||
|
- 5b : Calculer le nombre moyen d'article distinct d'un ticket. (6.69)
|
||||||
|
- 5c : Calculer le nombre moyen d'article d'un ticket. Les articles facturés au poids comptent pour 1. (7.22)
|
||||||
|
- 6a : Pour chaque famille, afficher le nom de la famille et le nombre d'articles associés.
|
||||||
|
- 6b : Quel est le nombre d'article de la famille 02CHOU. (29)
|
||||||
|
- 7a : Afficher, pour chaque mois, le chiffre d’affaires réalisé.
|
||||||
|
- 7b : Quel est le chiffre d'affaire du mois d'avril 2016. (20042.39)
|
||||||
|
- 8 : Trouver les 3 adhérents qui ont dépensé le plus en montant total. (Collot, Gérard, Blandin)
|
||||||
|
- 9a : Afficher l'article facturé au poids ayant généré le plus de ventes en quantité totale vendue. (Pomme)
|
||||||
|
- 9b : Afficher l'article facturé à l'unité ayant généré le plus de ventes en quantité totale vendue. (Oeufs Boite 6)
|
||||||
|
- 10a : Pour chaque famille, afficher le montant total des ventes.
|
||||||
|
- 10b : Quel est le montant total des ventes de la famille 03FRAISE. (10368.69)
|
||||||
|
|
||||||
|
- 11a : Combien d'adhérents n’ont jamais acheté d'article ?
|
||||||
|
- 11b : Combien d'adhérents n’ont aucun ticket ?
|
||||||
|
- 11c : Combien de tickets sont vides (sans ligne)
|
||||||
|
|
||||||
|
- 20 : Quel adhérent est en double (même nom, prénom, date de naissance)
|
||||||
|
|||||||
@@ -1,16 +1,24 @@
|
|||||||
-- Réponses
|
-- Réponses questions de 1 à 10
|
||||||
|
|
||||||
-- 1a : Quel est le nombre total de ticket ?
|
-- 1a : 101 616
|
||||||
-- 101 616
|
|
||||||
select count(*) as nb_ticket from ticket;
|
select count(*) as nb_ticket from ticket;
|
||||||
|
|
||||||
-- 1b : Quel est le nombre total d'adhérents ?
|
-- 1b : 2439
|
||||||
-- 2439
|
|
||||||
select count(*) as nb_adherent from adherent;
|
select count(*) as nb_adherent from adherent;
|
||||||
|
|
||||||
-- 2 : Calculer le chiffre d’affaires global.
|
-- 1c : 1099
|
||||||
-- 1 914 792.39585
|
select count(*) as nb_articles from article;
|
||||||
select sum(quantite * prix_unitaire) as chiffre_affaire from ligne;
|
|
||||||
|
-- 1d : 159
|
||||||
|
select count(*) as nb_familles from famille;
|
||||||
|
|
||||||
|
-- ------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 2 : 1 914 792.40
|
||||||
|
select round(sum(quantite * prix_unitaire), 2) as chiffre_affaire from ligne;
|
||||||
|
|
||||||
|
-- 2: 1 915 049.36
|
||||||
|
select sum(round(quantite * prix_unitaire, 2)) as chiffre_affaire from ligne;
|
||||||
|
|
||||||
-- 3a : Pour chaque adhérent unique, afficher son nom et son nombre de ticket.
|
-- 3a : Pour chaque adhérent unique, afficher son nom et son nombre de ticket.
|
||||||
select a.nom,
|
select a.nom,
|
||||||
@@ -27,7 +35,7 @@ join ticket t on a.id = t.adherent_id
|
|||||||
where a.nom = 'Lavergne'
|
where a.nom = 'Lavergne'
|
||||||
group by a.id;
|
group by a.id;
|
||||||
|
|
||||||
-- 3c : Quels sont les personnes qu iont exactement 72 tickets ?
|
-- 3c : Quels sont les personnes quiont exactement 72 tickets ?
|
||||||
select a.nom, a.prenom,
|
select a.nom, a.prenom,
|
||||||
count(t.id) as nb_ticket
|
count(t.id) as nb_ticket
|
||||||
from adherent a
|
from adherent a
|
||||||
@@ -35,7 +43,22 @@ join ticket t on a.id = t.adherent_id
|
|||||||
group by a.id
|
group by a.id
|
||||||
having count(t.id) = 72;
|
having count(t.id) = 72;
|
||||||
|
|
||||||
-- 4a : Calculer le montant moyen d’un ticket.
|
-- 4 : Afficher le produit le plus cher et le produit le moins cher (avec leur prix).
|
||||||
|
-- Pistache 63
|
||||||
|
select article.article, prix
|
||||||
|
from article
|
||||||
|
order by prix desc
|
||||||
|
limit 1;
|
||||||
|
|
||||||
|
-- Courgette Mini Fleur 0.3
|
||||||
|
select article.article, prix
|
||||||
|
from article
|
||||||
|
order by prix asc
|
||||||
|
limit 1;
|
||||||
|
|
||||||
|
-- ------------------------------------------------------------
|
||||||
|
|
||||||
|
-- 5a : Calculer le montant moyen d’un ticket.
|
||||||
-- 18.84
|
-- 18.84
|
||||||
select avg(total_ticket) as panier_moyen
|
select avg(total_ticket) as panier_moyen
|
||||||
from (
|
from (
|
||||||
@@ -45,7 +68,7 @@ from (
|
|||||||
group by t.id
|
group by t.id
|
||||||
) sous_requete;
|
) sous_requete;
|
||||||
|
|
||||||
-- 4b : Calculer le nombre moyen d'article distinct d'un ticket.
|
-- 5b : Calculer le nombre moyen d'article distinct d'un ticket.
|
||||||
-- 6.69
|
-- 6.69
|
||||||
SELECT avg(nb_articles_distincts) AS moyenne_articles_distincts
|
SELECT avg(nb_articles_distincts) AS moyenne_articles_distincts
|
||||||
FROM (
|
FROM (
|
||||||
@@ -55,7 +78,7 @@ FROM (
|
|||||||
GROUP BY t.id
|
GROUP BY t.id
|
||||||
) sub;
|
) sub;
|
||||||
|
|
||||||
-- 4c Calculer le nombre moyen d'article d'un ticket. Les articles facturés au poids comptent pour 1.
|
-- 5c Calculer le nombre moyen d'article d'un ticket. Les articles facturés au poids comptent pour 1.
|
||||||
-- 7.21
|
-- 7.21
|
||||||
SELECT AVG(nb_articles) AS moyenne_articles_par_ticket
|
SELECT AVG(nb_articles) AS moyenne_articles_par_ticket
|
||||||
FROM (
|
FROM (
|
||||||
@@ -72,19 +95,7 @@ FROM (
|
|||||||
GROUP BY t.id
|
GROUP BY t.id
|
||||||
) sub;
|
) sub;
|
||||||
|
|
||||||
|
-- ------------------------------------------------------------
|
||||||
-- 5 : Afficher le produit le plus cher et le produit le moins cher (avec leur prix).
|
|
||||||
-- Pistache 63
|
|
||||||
select article.article, prix
|
|
||||||
from article
|
|
||||||
order by prix desc
|
|
||||||
limit 1;
|
|
||||||
|
|
||||||
-- Courgette Mini Fleur
|
|
||||||
select article.article, prix
|
|
||||||
from article
|
|
||||||
order by prix asc
|
|
||||||
limit 10;
|
|
||||||
|
|
||||||
-- 6a : Pour chaque famille, afficher le nom de la famille et le nombre d'articles associés.
|
-- 6a : Pour chaque famille, afficher le nom de la famille et le nombre d'articles associés.
|
||||||
select f.famille, count(a.code) as nb_produits
|
select f.famille, count(a.code) as nb_produits
|
||||||
@@ -108,6 +119,13 @@ join ligne l on t.id = l.ticket_id
|
|||||||
group by date_trunc('month', t.date_ticket)
|
group by date_trunc('month', t.date_ticket)
|
||||||
order by mois;
|
order by mois;
|
||||||
|
|
||||||
|
-- 7b
|
||||||
|
select
|
||||||
|
sum(l.quantite * l.prix_unitaire) as montant_mensuel
|
||||||
|
from ticket t
|
||||||
|
join ligne l on t.id = l.ticket_id
|
||||||
|
where date_trunc('month', t.date_ticket) = '2016-04-01';
|
||||||
|
|
||||||
-- 8 : Trouver les 3 adhérents qui ont dépensé le plus en montant total.
|
-- 8 : Trouver les 3 adhérents qui ont dépensé le plus en montant total.
|
||||||
select a.nom, sum(l.quantite * l.prix_unitaire) as total_depense
|
select a.nom, sum(l.quantite * l.prix_unitaire) as total_depense
|
||||||
from adherent a
|
from adherent a
|
||||||
@@ -117,7 +135,16 @@ group by a.nom
|
|||||||
order by total_depense desc
|
order by total_depense desc
|
||||||
limit 3;
|
limit 3;
|
||||||
|
|
||||||
-- 9 : Afficher l'article ayant généré le plus de ventes en quantité totale vendue.
|
-- 9a : Afficher l'article ayant généré le plus de ventes en quantité totale vendue.
|
||||||
|
select a.article, sum(l.quantite) as total_vendu
|
||||||
|
from article a
|
||||||
|
join ligne l on a.code = l.article_code
|
||||||
|
where a.factpoids = true
|
||||||
|
group by a.article
|
||||||
|
order by total_vendu desc
|
||||||
|
limit 1
|
||||||
|
|
||||||
|
-- 9b : Afficher l'article ayant généré le plus de ventes en quantité totale vendue.
|
||||||
select a.article, sum(l.quantite) as total_vendu
|
select a.article, sum(l.quantite) as total_vendu
|
||||||
from article a
|
from article a
|
||||||
join ligne l on a.code = l.article_code
|
join ligne l on a.code = l.article_code
|
||||||
@@ -127,10 +154,10 @@ order by total_vendu desc
|
|||||||
limit 1
|
limit 1
|
||||||
|
|
||||||
-- 10 : Pour chaque famille, afficher le montant total des ventes.
|
-- 10 : Pour chaque famille, afficher le montant total des ventes.
|
||||||
select f.famille,
|
select f.code,
|
||||||
sum(l.quantite * l.prix_unitaire) as total_famille
|
sum(l.quantite * l.prix_unitaire) as total_famille
|
||||||
from famille f
|
from famille f
|
||||||
join article a on f.code = a.famille_code
|
join article a on f.code = a.famille_code
|
||||||
join ligne l on a.code = l.article_code
|
join ligne l on a.code = l.article_code
|
||||||
group by f.famille
|
group by f.code
|
||||||
order by total_famille desc;
|
order by total_famille desc;
|
||||||
41
exercice.md
41
exercice.md
@@ -1,41 +0,0 @@
|
|||||||
# Exercices
|
|
||||||
|
|
||||||
## 1. Fonctions d'agrégation
|
|
||||||
|
|
||||||
- 1a : Quel est le nombre total de ticket ?
|
|
||||||
- 1b : Quel est le nombre total d'adhérents ?
|
|
||||||
- 2 : Calculer le chiffre d’affaires global.
|
|
||||||
- 3a : Pour chaque adhérent unique, afficher son nom et son nombre de ticket.
|
|
||||||
- 3b : Quel est le détail du nombre de ticket pour ceux dont le nom de famille est Lavergne ?
|
|
||||||
- 3c : Quels sont les personnes qu iont exactement 72 tickets ?
|
|
||||||
- 4a : Calculer le montant moyen d’un ticket.
|
|
||||||
- 4b : Calculer le nombre moyen d'article distinct d'un ticket.
|
|
||||||
- 4c : Calculer le nombre moyen d'article d'un ticket. Les articles facturés au poids comptent pour 1.
|
|
||||||
- 5 : Afficher l'article le plus cher et l'article le moins cher (avec leur prix).
|
|
||||||
- 6a : Pour chaque famille, afficher le nom de la famille et le nombre d'articles associés.
|
|
||||||
- 6b : Quel est le nombre d'article de la famille 02CHOU
|
|
||||||
- 7 : Afficher, pour chaque mois, le chiffre d’affaires réalisé.
|
|
||||||
- 8 : Trouver les 3 adhérents qui ont dépensé le plus en montant total.
|
|
||||||
- 9a : Afficher l'article facturé au poids ayant généré le plus de ventes en quantité totale vendue.
|
|
||||||
- 9b : Afficher l'article facturé à l'unité ayant généré le plus de ventes en quantité totale vendue.
|
|
||||||
- 10 : Pour chaque famille, afficher le montant total des ventes.
|
|
||||||
|
|
||||||
## 2. Jointures
|
|
||||||
|
|
||||||
- 1a : Combien d'adhérents n’ont jamais acheté d'article ?
|
|
||||||
- 1b : Combien d'adhérents n’ont aucun ticket ?
|
|
||||||
- 1c : Combien de tickets sont vides (sans ligne)
|
|
||||||
- 2a : Quel est l'article qui n'a jamais été commandé ?
|
|
||||||
- 2b : Quels sont les articles qui apparaissent qu'une seule fois
|
|
||||||
- 3 : Lister les articles dont la famille est absente
|
|
||||||
|
|
||||||
- 1 : Lister tous les tickets avec le nom du client. Afficher uniquement les tickets qui ont un client existant.
|
|
||||||
- 2 : Lister tous les clients et le nombre de tickets associés, même les clients qui n’ont pas encore de ticket doivent apparaître (avec 0).
|
|
||||||
- 3 : Lister tous les tickets, avec le nom du client s’il existe. Si un ticket a perdu sa référence client (valeur orpheline), il doit tout de même apparaître.
|
|
||||||
- 4 : Lister tous les clients et tous les tickets, même si la correspondance n’existe pas. Union des clients sans tickets et des tickets sans clients.
|
|
||||||
- 5 : Lister uniquement les clients qui ont acheté au moins un produit.
|
|
||||||
|
|
||||||
- 7 : Lister les produits avec leur famille, même si certains produits n’ont pas de famille renseignée.
|
|
||||||
- 8 : Lister tous les couples de clients qui habitent dans la même ville.
|
|
||||||
- 9 : Lister toutes les combinaisons possibles de familles et de clients (sans condition de jointure).
|
|
||||||
- 10 : Lister les tickets contenant au moins un produit de la famille "Boissons".
|
|
||||||
Reference in New Issue
Block a user