lateral
18
Home.md
18
Home.md
@@ -17,12 +17,28 @@
|
|||||||
- Afficher le nombre de codes postaux différents trouvés dans la table adhérent. [voir](aggregation.md#distinct)
|
- Afficher le nombre de codes postaux différents trouvés dans la table adhérent. [voir](aggregation.md#distinct)
|
||||||
- Calculer le chiffre d'affaire global [voir](aggregation.md#somme)
|
- Calculer le chiffre d'affaire global [voir](aggregation.md#somme)
|
||||||
- Calculer le montant de chaque ticket
|
- Calculer le montant de chaque ticket
|
||||||
|
- Afficher l'article le plus cher (avec son prix). [voir](aggregation.md#maximum)
|
||||||
|
|
||||||
### Jointures
|
### Jointures
|
||||||
- Lister les articles dont la famille n'existe pas [voir](Jointure.md#jointure-dexclusion).
|
- Lister les articles dont la famille n'existe pas [voir](Jointure.md#jointure-dexclusion).
|
||||||
|
- Lister les articles dont la famille est absente. [voir](Jointure.md#jointure-dexclusion).
|
||||||
|
|
||||||
### Vues
|
### Vues
|
||||||
- Créer une vue _ticket_complet_ qui agrège les informations du ticket et le calcul du montant total de ce ticket
|
- Créer une vue _ticket_complet_ qui agrège les informations du ticket et le calcul du montant total de ce ticket
|
||||||
|
- Créer une vue qui donne le chiffre d'affaires de chaque mois
|
||||||
|
|
||||||
|
```sql
|
||||||
|
create or replace view ca_mensuel as
|
||||||
|
select date_trunc('month', date_ticket) as mois,
|
||||||
|
sum(montant) as total
|
||||||
|
from ticket_completz tc
|
||||||
|
group by mois --date_trunc('month', date_ticket)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sous requêtes
|
||||||
|
- Afficher pour chaque adhérent la date et le montant de son dernier ticket. [voir](sousrequete.md#laterals).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Arrondir les montant à deux chiffres après la virgule.
|
Arrondir les montant à deux chiffres après la virgule.
|
||||||
|
|
||||||
@@ -47,5 +63,5 @@ Arrondir les montant à deux chiffres après la virgule.
|
|||||||
- 11c : Combien de tickets sont vides (sans ligne). (12)
|
- 11c : Combien de tickets sont vides (sans ligne). (12)
|
||||||
- 12a : Quel est l'article qui n'a jamais été commandé ? (Chocolat Noir 80% Framboise Myrtilles)
|
- 12a : Quel est l'article qui n'a jamais été commandé ? (Chocolat Noir 80% Framboise Myrtilles)
|
||||||
- 12b : Quels sont les articles qui apparaissent qu'une seule fois dans les lignes de ticket (Ananas séché 100g, ...)
|
- 12b : Quels sont les articles qui apparaissent qu'une seule fois dans les lignes de ticket (Ananas séché 100g, ...)
|
||||||
- 13 : Lister les articles dont la famille est absente. (MENMA)
|
|
||||||
- 14 : Lister les tickets qui contiennent l’article le plus cher du catalogue.
|
- 14 : Lister les tickets qui contiennent l’article le plus cher du catalogue.
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ C'est jointure est utilisée pour:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Jointure d'exclusion
|
## Jointure d'exclusion(jointure-dexclusion)
|
||||||
|
|
||||||
Un jointure d'exclusion à gauche (left anti-join) garde uniquement les lignes pour lesquelles il n’y a **pas** de correspondance (c’est-à-dire que les colonnes de la table de droite sont NULL).
|
Un jointure d'exclusion à gauche (left anti-join) garde uniquement les lignes pour lesquelles il n’y a **pas** de correspondance (c’est-à-dire que les colonnes de la table de droite sont NULL).
|
||||||
|
|
||||||
|
|||||||
@@ -145,10 +145,14 @@ SELECT SUM(vente) FROM ticket;
|
|||||||
|
|
||||||
```sql
|
```sql
|
||||||
select round(sum(quantite * prix_unitaire), 2) as chiffre_affaire from ligne;
|
select round(sum(quantite * prix_unitaire), 2) as chiffre_affaire from ligne;
|
||||||
|
>> 1914792.40
|
||||||
|
|
||||||
select sum(round(quantite * prix_unitaire, 2)) as chiffre_affaire from ligne;
|
select sum(round(quantite * prix_unitaire, 2)) as chiffre_affaire from ligne;
|
||||||
|
>> 1915049.36
|
||||||
```
|
```
|
||||||
|
|
||||||
|
L'arrondi de la somme n'est pas égal à la somme des arrondis.
|
||||||
|
|
||||||
### Moyenne
|
### Moyenne
|
||||||
|
|
||||||
Calcule la moyenne des valeurs d'une colonne numérique.
|
Calcule la moyenne des valeurs d'une colonne numérique.
|
||||||
@@ -167,11 +171,12 @@ select max(age) from adherent;
|
|||||||
|
|
||||||
Une autre solution consiste à trier la colonne est de limiter le résultat à une seule ligne
|
Une autre solution consiste à trier la colonne est de limiter le résultat à une seule ligne
|
||||||
|
|
||||||
Afficher l'article le plus cher (avec son prix). (Pistache 63 €)
|
**Exercice :** Afficher l'article le plus cher (avec son prix).
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select article, prix from article
|
select article, prix from article
|
||||||
order by prix desc limit 1;
|
order by prix desc limit 1;
|
||||||
|
>> Pistache 63 €
|
||||||
```
|
```
|
||||||
|
|
||||||
### Minimum
|
### Minimum
|
||||||
|
|||||||
@@ -150,6 +150,21 @@ WHERE prix > ALL (
|
|||||||
|
|
||||||
Une sous-requête LATERAL (ou sous-requête latérale) permet à une sous-requête dans la clause FROM d’accéder aux colonnes déjà définies dans les relations qui la précèdent.
|
Une sous-requête LATERAL (ou sous-requête latérale) permet à une sous-requête dans la clause FROM d’accéder aux colonnes déjà définies dans les relations qui la précèdent.
|
||||||
|
|
||||||
|
**Exercice :** Afficher pour chaque adhérent la date et le montant de son dernier ticket.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
select a.nom, a.prenom, dernier.date_ticket,
|
||||||
|
dernier.montant
|
||||||
|
from adherent a
|
||||||
|
join lateral (
|
||||||
|
select *
|
||||||
|
from ticket_completZ
|
||||||
|
where adherent_id = a.id
|
||||||
|
order by date_ticket desc -- tri descendant
|
||||||
|
limit 1
|
||||||
|
) dernier on dernier.adherent_id = a.id;
|
||||||
|
```
|
||||||
|
|
||||||
### CTE
|
### CTE
|
||||||
|
|
||||||
> Une requête CTE (Common Table Expression) est une construction SQL qui permet de définir une sous-requête temporaire, nommée, que l’on peut ensuite réutiliser dans une requête principale.
|
> Une requête CTE (Common Table Expression) est une construction SQL qui permet de définir une sous-requête temporaire, nommée, que l’on peut ensuite réutiliser dans une requête principale.
|
||||||
|
|||||||
Reference in New Issue
Block a user