0% ont trouvé ce document utile (0 vote)
16 vues12 pages

SQL : Analyse des ventes et des employés

Transféré par

Moustapha daro
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues12 pages

SQL : Analyse des ventes et des employés

Transféré par

Moustapha daro
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

6 Exo

Soient les relations

vente(numvoit, numpers, prix) voiture(numvoit, marque)

• Calculez la moyenne des prix de vente par marque en ne considérant que les marques dont

cette moyenne est supérieure `a 40000.

• Affichez les prix qui sont supérieurs `a la moyenne.

SELECT [Link], AVG([Link]) AS moyenne_prix

FROM voiture v

JOIN vente ve ON [Link] = [Link]

GROUP BY [Link]

HAVING AVG([Link]) > 40000;

SELECT [Link], [Link], [Link]

FROM vente ve

WHERE [Link] > (SELECT AVG(prix) FROM vente);

Explication

Requête 1 : On joint les tables venteet voitureen utilisant numvoitcomme clé de


jointure. Ensuite, on regroupe les résultats par marque et on utilise HAVINGpour
filtrer les moyennes supérieures à 40000.
Requête 2 : On récupèrevente

7 Exo
soient les relations suivantes : etudiant(nummat, nom, prenom, codfiliere, libfiliere, effectif) avoir-note(nummat,
codmat, date, libmat, coefficient, codfil, note)

professeur(nom, prenom, adresse) enseigner(numprof, nom, codmat, libmat, codfiliere)

Mettez les relation en troisi`eme forme sachant que :

• le coefficient d’une mati`ere d´dépend de la filière dans laquelle elle est ´étudiée
• une matières est enseignée par un et seul professeur dans la même filière.

8 Exo
Soient les relations suivantes :

Emp(numE, nomE, fonction, numS, embauche, salaire, comm, numD) Dept(numD, nomD, Lieu)

1. Donnez la liste des employ´es ayant une commission, class´e par commission d´ecroissante.

2. Donnez les noms des personnes embauch´ees depuis le 01-09-2006.

3. Donnez la liste des employ´es travaillant `a Cr´eteil.

4. Donnez la moyenne des salaires

5. Donnez le nombre de commission non NULL

6. Donnez la liste des employ´ees gagnant plus que la moyenne des salaires de l’entreprise.

9 Exo
disque(codeOuv, titre, style, pays, annee, producteur) exempl disk(codeOuv, numEx, dateachat, etat)

livre(codeOuv, titre, editeur, collection) exempl liv(codeOuv, numEx, dateachat, etat) auteur(codeOuv, identit´e)

abonne(numabo, nom, rue, ville, codep, tel)

pret(codeOuv, numEx, diskoulivr, numabo, datepret) personnel(numemp, nom, adresse, fonction, salaire)

1. Quel est le contenu de la relation livre ?

2. Quels sont les titres des romans ´edit´es par Gava-editor ?

3. Quelle est la liste des titre que l’on retrouve `a la fois comme titre de disque et titre de livre

4. Quelle est l’identit´e des auteurs qui ont fait des disque et ´ecrit des livres ?

5. Quels sont les diff´erents style de disques propos´es ?

6. Quel est le salaure annuel des membres du personnel gagnant plus de 20000 francs en

ordonnant le r´esultat par salaire d´ecroissant ?

7. Donnez le nombre de prets en cours pour chaque famille en consid´erant qu’une famille

regroupe des personnes de mˆeme nom et poss´edant le mˆeme num´ero de t´el´ephone ?


8. Quel est le code du disque dont la m´ediath`eque poss`ede le plus grand nombre d’exemplaire

9. Quels sont les ´editeurs pour lesquels l’attribut collection n’a pas ´et´e renseign´e ?

10. Quels sont les abonn´es d ont le nom contient la chaˆıne ”toto” et habitant en Is`ere ?

11. Quel est le nombre de genres de livres diff´erents ?

12. Quel est le nombre de disque achet´e en 1998 ?

13. Quel est le nom des abonn´es ayant emprunt´e un disque le 12/01/2006 ?

14. Quels sont les titres des livres et des disques actuellement emprunt´es par Franck ?

15. Quels sont les codes des ouvrages des livres pour lesquels il y a au moins un exemplaire

emprunt´e et au moins un exemplaire disponible ?

Voici les réponses aux exercices en utilisant SQL :

---

### Exercice 7

#### Mise en troisième forme normale des relations

Pour mettre les relations en 3NF, voici les ajustements basés sur les règles fournies
:

1. **Pour la relation `avoir-note` :**

- Puisque le coefficient d'une matière dépend de la filière, on peut séparer `avoir-


note` en deux tables :

- Une table `matiere` qui stocke `codmat`, `libmat`, `codfil`, et `coefficient`.

- La table `avoir-note` conserve `nummat`, `codmat`, `date`, et `note`.


```sql

-- Nouvelle table `matiere`

matiere(codmat, libmat, codfil, coefficient)

-- Table modifiée `avoir-note`

avoir_note(nummat, codmat, date, note)

```

2. **Pour la relation `enseigner` :**

- Puisque chaque matière est enseignée par un seul professeur dans la même
filière, on supprime `nom` de `enseigner`, car il est déjà dans `professeur`.

- On crée une clé primaire composite (codmat, codfiliere) pour représenter


l'association unique entre le professeur, la matière et la filière.

```sql

-- Table modifiée `enseigner`

enseigner(numprof, codmat, codfiliere)

```

---

### Exercice 8

#### 1. Liste des employés ayant une commission, classée par commission
décroissante
```sql

SELECT *

FROM Emp

WHERE comm IS NOT NULL

ORDER BY comm DESC;

```

#### 2. Noms des personnes embauchées depuis le 01-09-2006

```sql

SELECT nomE

FROM Emp

WHERE embauche >= '2006-09-01';

```

#### 3. Liste des employés travaillant à Créteil

```sql

SELECT E.*

FROM Emp E

JOIN Dept D ON [Link] = [Link]

WHERE [Link] = 'Créteil';

```
#### 4. Moyenne des salaires

```sql

SELECT AVG(salaire) AS moyenne_salaire

FROM Emp;

```

#### 5. Nombre de commissions non NULL

```sql

SELECT COUNT(comm) AS nombre_commissions

FROM Emp

WHERE comm IS NOT NULL;

```

#### 6. Liste des employés gagnant plus que la moyenne des salaires

```sql

SELECT *

FROM Emp

WHERE salaire > (SELECT AVG(salaire) FROM Emp);

```

---
### Exercice 9

#### 1. Contenu de la relation `livre`

```sql

SELECT *

FROM livre;

```

#### 2. Titres des romans édités par "Gava-editor"

```sql

SELECT titre

FROM livre

WHERE editeur = 'Gava-editor';

```

#### 3. Liste des titres communs entre disques et livres

```sql

SELECT [Link]

FROM disque

JOIN livre ON [Link] = [Link];

```
#### 4. Identité des auteurs ayant fait des disques et écrit des livres

```sql

SELECT [Link]

FROM auteur

JOIN disque ON [Link] = [Link]

JOIN livre ON [Link] = [Link];

```

#### 5. Différents styles de disques proposés

```sql

SELECT DISTINCT style

FROM disque;

```

#### 6. Salaire annuel des membres du personnel gagnant plus de 20000 francs,
par salaire décroissant

```sql

SELECT nom, (salaire * 12) AS salaire_annuel

FROM personnel

WHERE salaire > 20000

ORDER BY salaire_annuel DESC;

```
#### 7. Nombre de prêts en cours pour chaque famille (même nom et numéro de
téléphone)

```sql

SELECT nom, tel, COUNT(*) AS nb_prets

FROM abonne

JOIN 2pret ON [Link] = [Link]

GROUP BY nom, tel;

```

#### 8. Code du disque avec le plus grand nombre d’exemplaires

```sql

SELECT codeOuv

FROM exempl_disk

GROUP BY codeOuv

ORDER BY COUNT(numEx) DESC

LIMIT 1;

```

#### 9. Éditeurs pour lesquels l’attribut `collection` n’est pas renseigné

```sql

SELECT DISTINCT editeur


FROM livre

WHERE collection IS NULL;

```

#### 10. Abonnés dont le nom contient "toto" et habitant en Isère

```sql

SELECT *

FROM abonne

WHERE nom LIKE '%toto%' AND codep LIKE '38%';

```

#### 11. Nombre de genres de livres différents

```sql

SELECT COUNT(DISTINCT collection) AS nb_genres

FROM livre;

```

#### 12. Nombre de disques achetés en 1998

```sql

SELECT COUNT(*) AS nb_disques

FROM exempl_disk

WHERE YEAR(dateachat) = 1998;


```

#### 13. Nom des abonnés ayant emprunté un disque le 12/01/2006

```sql

SELECT [Link]

FROM abonne

JOIN 2pret ON [Link] = [Link]

WHERE [Link] = 'disque' AND [Link] = '2006-01-12';

```

#### 14. Titres des livres et disques empruntés par "Franck"

```sql

SELECT [Link]

FROM 2pret

JOIN livre ON [Link] = [Link]

JOIN abonne ON [Link] = [Link]

WHERE [Link] = 'Franck'

UNION

SELECT [Link]

FROM 2pret

JOIN disque ON [Link] = [Link]

JOIN abonne ON [Link] = [Link]

WHERE [Link] = 'Franck';


```

#### 15. Codes des livres avec au moins un exemplaire emprunté et un exemplaire
disponible

```sql

SELECT [Link]

FROM livre l

JOIN exempl_liv e1 ON [Link] = [Link] AND [Link] = 'emprunté'

JOIN exempl_liv e2 ON [Link] = [Link] AND [Link] = 'disponible'

GROUP BY [Link];

```

Ces requêtes devraient fournir les informations demandées pour chaque exercice.

Vous aimerez peut-être aussi