sql1-tp1

28
Base de données LE LANGAGE SQL LE LANGAGE SQL TD Q1 : Afficher tous les noms de fournisseurs SELECT frs_nom FROM fournisseurs; Frs_nom SAFI electronic Les stylos reunis Mecanique de precision Sarl Ali electrolamp 5 tuples retrouvés

Upload: omar-el-ansari

Post on 04-Jul-2015

349 views

Category:

Documents


38 download

TRANSCRIPT

Page 1: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

TD

Q1 : Afficher tous les noms de fournisseurs

SELECT frs_nomFROM fournisseurs;

Frs_nomSAFI electronicLes stylos reunisMecanique de precisionSarl Alielectrolamp

5 tuples retrouvés

Page 2: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q2 : Rechercher la liste des localités où habite un client

SELECT DISTINCT clt_loc localiteFROM clients

LocaliteCasaTunisAlgerKenitraJadidaSaléMarrakechRabat

8 tuples retrouvés

Page 3: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q3 : retrouver tous les clients habitant à casa

SELECT clt_num,clt_nom,clt_pnomFROM clientsWHERE clt_loc=‘casa’;

Clt_num clt_nom clt_ponmC01 C02 C13 C14

4 tuples retrouvés

Page 4: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q4 : Sélectionner tous les articles dont le poids est supérieurs à 500

SELECT art-num,art_nom,art_poidsFROM articlesWHERE art_poids>500 ;

Art_ num art_nom art_poidsA04 Lampe 550.0A05 Lampe 550.0A06 Lampe 550.0A07 Lampe 550.0

4 tuples retrouvés

Page 5: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q5 : Sélectionner tous les articles pour lesquels le prix de vente est supérieurou égal au double du prix d’achat.

SELECT art_num,art_nom,art_pa,art_pvFROM articlesWHERE art_pv>= 2*art_pa;

Art_num art_nom art_pa art_pvA10 Crayon 1 2A11 Crayon 1 2

2 tuples retrouvés

Page 6: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q6 : Sélectionner tous les articles rouges de poids supérieurs à 100.

SELECT art_nim,art_nom,art_poids,art_coulFROM articlesWHERE art-coul=‘rouge’ AND art_poids>100;

Art num art_nom art_poids art_coulA01 Agrafeuse 150.0 rougeA04 Lampe 550.0 rouge

2 tuples retrouvés

Page 7: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q7 : Sélectionner tous les articles rouges et ceux de poids supérieurs à 500.

SELECT art_num, art_nom, art_poids, art_coulFROM articles

WHERE art_coul=‘rouge’ OR art_poids >500;

Art_num Art_nom Art_poids Art_coul

A01 Agrafeuse 150.0 rouge

A04 Lampe 550.0 Rouge

A05 Lampe 550.0 Blanc

A06 Lampe 550.0 Bleu

A07 Lampe 550.0 Vert

A10 Crayon 20.0 Rouge

A12 Crayon luxe 20.0 Rouge

7 tuples retrouvés

Page 8: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q8 : l’inverse de Q7.

SELECT art_num, art_nom, art_poids, art_coulFROM articlesWHERE NOT(art_coul=‘rouge’ OR art_poids >500);

Art_num Art_nom Art_poids Art_coul

A02 Calculatrice 150.0 Noir

A03 Cachet dateur 100.0 Blanc

A11 Crayon 20.0 Bleu

A13 Crayon luxe 20.0 Vert

A14 Crayon luxe 20.0 Bleu

A15 Crayon luxe 20.0 Noir

6 tuples trouvés

Page 9: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q9 : Sélectionner tous les articles dont, soit la couleur est rouge et le poids est supérieur à 100, soit la couleur est verte.

SELECT art_num, art_nom, art_poids, art_coulFROM articlesWHERE (art_coul=‘rouge’ AND art_poids >100) OR art-coul=‘vert’;

Art_num Art_nom Art_poids Art_coul

A01 Agrafeuse 150.0 rouge

A04 Lampe 550.0 Rouge

A07 Lampe 550.0 Vert

A13 Crayon luxe 20.0 Vert

4 tuples retrouvés

Page 10: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q10 : Afficher la liste des articles dont le prix est compris entre 100 et 150.

SELECT art_num, art_nom,art_paFROM articles

WHERE art_pa BETWEEN 100 AND 150;

Art_num Art_nom Art_pa

A04 Lampe 105

A05 Lampe 105

A06 Lampe 105

A07 Lampe 105

A08 Pese lettre 1-500 120

A09 Pese lettre 1-1000 150

6 tuples retrouvés

Page 11: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q11 : Afficher la liste des articles de couleur soit rouge soit vert

SELECT art_num, art_nom,art_coulFROM articlesWHERE art_coul IN (‘rouge’,’vert’);

Art_num Art_nom Art_coul

A01 Agrafeuse rouge

A04 Lampe Rouge

A07 Lampe Vert

A10 Crayon Rouge

A12 Crayon luxe Rouge

A13 Crayon luxe Vert

6 tuple trouvés

Page 12: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q12 : Afficher les clients dont le nom commence par A.

SELECT clt_num,clt_nom,clt_pnomFROM clientsWHERE clt_nom LIKE ‘A%’

Clt_num Clt_nom Clt_pnom

2 tuples retrouvés

Page 13: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q13 : Afficher les clients dont le nom commence par A et le 4 caractère est B

SELECT clt_num,clt_nom,clt_pnomFROM clientsWHERE clt_nom LIKE ‘A___B%’

Clt_num Clt_nom Clt_pnom

0 tuple retrouvés

Page 14: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q14 : Rechercher tous les articles pour lesquels on a négligé la couleur.

SELECT art_num,art_nom,FROM articlesWHERE art_coul IS NULL

Art_num Art_nom

A08 Pese lettre 1-500

A09 Pese lettre 1-1000

2 tuples retrouvés

Page 15: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q15 : Trier les articles selon l’ordre croissant de

leurs poids.

SELECT art_num,art_nom,art_poidsFROM articlesORDER BY art_poids

Art_num Art_nom Art_poids

A08 Pese lettre 1-500

A09 Pese lettre 1-1000

A11 Crayon 20.0

A12 Crayon luxe 20.0

A13 Crayon luxe 20.0

A14 Crayon luxe 20.0

A15 Crayon luxe 20.0

A10 Crayon 20.0

A03 Cachet dateur 100

A01 Agrafeuse 150

A02 Calculatrice 150

A05 Lampe 550.0

A06 Lampe 550.0

A07 Lampe 550.0

15 tuples retrouvés

Page 16: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q16 : Trier les articles de poids inférieur ou égal à 100 selon l’ordre croissant de Leur poids et à poids égal par prix d’achat décroissant.

SELECT art_num,art_nom,art_poids,art_paFROM articlesWHERE art_poids<= 100ORDER BY art_poids, art_pa DES;

Art_num Art_nom Art_poids

Art_pa

A12 Crayon luxe 20.0 3

A13 Crayon luxe 20.0 3

A14 Crayon luxe 20.0 3

A15 Crayon luxe 20.0 3

A10 Crayon 20.0 1

A11 Crayon 20.0 1

A03 Cachet dateur 100.0 21

7 tuples retrouvés

Page 17: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q17 : Afficher la marge bénéficiaire sur les produits dont le prix d’achat est supérieur à 100, par ordre de celle-ci.

SELECT art_num,art_nom,art_pa, art_pv,art_pv – art_pa margeFROM articlesWHERE art_pa >100ORDER BY 5; Art_num Art_nom Art_pa Art_pv marge

A02 Calculatrice 200 235 35

A04 Lampe 105 149 44

A05 Lampe 105 149 44

A06 Lampe 105 149 44

A07 Lampe 105 149 44

A08 Pese lettre 1-500 120 200 80

A09 Pese lettre 1-1000 150 250 100

7 tuples retrouvés

Page 18: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q18 : Pour tous les clients habitant casa, afficher le nom complet.

SELECT clt_num, clt_nom|| ‘ ‘|| clt_pnom nom_completFROM clientsWHERE clt_loc=‘casa’

Clt_num Nom_complet

C01

C02

C13

C14

4 tuples retrouvés

Page 19: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q19 : Calculer le délai moyen entre la commande et la date de livraison souhaité, ainsi que le plus grand délai.

SELECT AVG(lcddat_liv- cmd_date) delai, MAX(lcddat_liv- cmd_date) maxFROM commandes,lig_cmdWHERE cmd_num=lcd_cmd

Delai max

1.1786 5

1 tuple retrouvé

Page 20: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q20 : Calculer le poids moyen des articles

SELECT AVG (art_poids) moyenneFROM articles

moyenne

209.23

1 tuple retrouvé

Page 21: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q21 : calculer le prix de l’article le plus cher du stock.

SELECT MAX(art_pv) prix_maxFROM articles

Prix_max

250

1 tuple retrouvé

Page 22: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q22 : Calculer le poids moyen, la marge maximum (la plus grande différence entre prix de vente et d’achat), la différence entre le prix de vente maximum et le prix d’achat maximum, pour les articles dont l’attribut art_coul est défini.

SELECT AVG(art_poids) pmoyen,MAX(art_pv-art_pa) margemax, MAX(art_pv) – MAX(art_pa) dpmax

FROM articlesWHERE art_coul IS NOT NULL;

pmoyen margemax Dpmax

209.23 44 35

1 tuple retrouvé

Page 23: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q23 : compter le nombre de couleurs différentes existant dans le stock.

SELECT COUNT (DISTINCT art_coul) AS ncouleurFROM articles;

Ncouleur

5

1 tuple retrouvé

Page 24: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q24 : Calculer le prix de vente moyen de chaque couleur d’articles.

SELECT art_coul,AVG(art_pv)FROM articlesGROUP BY art_coulORDER BY art_coul;

Art_coul AVG(art_pv)

NULL 225

Blanc 89.55

Bleu 52.0

Noir 120

Rouge 46.25

Vert 77

7 tuples retrouvés

La clause GROUP BY réarrange la table résultant du SELECT en un nombre minimum de groupes tels que, à l’intérieur de chaque groupe, l’attribut spécifié possède la même

valeur pour chaque tuple.

Page 25: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q25 : Calculer le prix de vente moyen des articles de chaque couleur en excluant les articles pour lesquels le prix d’achat est inférieur à 5.

SELECT art_coul,AVG(art_pv)FROM articlesWHERE art_pa=>5GROUP BY art_coulORDER BY art_coul;

Art_coul AVG(art_pv)

NULL 250

Blanc 89.55

Bleu 149.0

Noir 235

Rouge 49

Vert 149

7 tuples retrouvés

Page 26: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q26 : Rechercher la couleur des articles dont le prix de vente moyen des articles Q26 : Rechercher la couleur des articles dont le prix de vente moyen des articles de la couleur est supérieur à 100.de la couleur est supérieur à 100.

SELECT art_coul,AVG(art_pv)FROM articlesGROUP BY art_coulHAVING AVG(art_pv) >100ORDER BY art_coul;

Art_coul AVG(art_pv)

NULL 225

Noir 120

2 tuples retrouvés

La clause HAVING est l’équivalent de WHERE appliqué aux groupes. Cette clause ne peut généralement être spécifiée que si une clause GROUP BY l’a été. En pratique, le critère spécifié dans la clause HAVING porte sur la valeur d’une fonction calculée sur un groupe. Les groupes ne répondant pas au critère spécifié dans la clause HAVING ne font pas partie du résultat.

Page 27: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

Q27 : Rechercher les magasins, qui, pendant la période du 6 au 7 juin , ont réalisé plus de 1 vente.

SELECT cmd_mag, COUNT(*) AS nventeFROM commandesWHERE cmd_date BETWEEN ‘940606’ AND ‘940607’GROUP BY cmd_magHAVING COUNT(*) >1

Cmd_mag Nvente

M11 2

1 tuple retrouvé

Page 28: sql1-TP1

Base de données

LE LANGAGE SQLLE LANGAGE SQL

• Donner le numéro des articles vendus, avec pour chacun leprix moyen de vente, et le nombre de vente.• Donner par magasins les statistiques de ventes en 94, à savoirle nombre de vente , le nombre de clients différents et le nombrede jours où il y a eu vente.• Donner les numéros des clients qui ont acheté plus d’une fois dans la semaine du 6 au 10 juin 94• Donner, pour les années 92 à 94, le nombre de clients différents sur une année, tous magasins confondus.• Classer les localités en fonction du nombre décroissant de clients qui y habitent

Devoir