Vous êtes sur la page 1sur 25

-- 1.2.

1 CREATION DES TABLES :

CREATE database BD_ACHAT;

USE BD_ACHAT;

CREATE table CLIENT (

numcli int(12) primary key auto_increment,

nomcli varchar(25) NOT NULL,

ville varchar(10) NOT NULL,

categorie varchar(10),

compte decimal(9,2)

);

CREATE table PRODUIT (

numpro int(12) auto_increment,

typepro varchar(25),

nompro varchar(30),

prix decimal(9,2),

qstock int(4),

-- Clé primaire :

constraint pk_produit primary key (numpro),

-- Contrainte qstock entre 0 et 1000:

constraint check (qstock between 0 AND 1000)

);

CREATE table COMMANDE (

numcom int auto_increment,

numcli int(12) NOT NULL,

datecom date,

-- Clé primaire :

constraint pk_commande primary key (numcom),

-- Clé étrangere :

constraint fk1_commande foreign key (numcli) references CLIENT (numcli),

-- Contrainte prix >= 0 :

constraint check (prix >= 0)


);

CREATE table DETAIL (

numcom int,

numpro int(12),

qcom int(4),

-- Clé primaire :

constraint pk_detail primary key (numcom,numpro),

-- Clés étrangères :

constraint fk1_detail foreign key (numcom) references COMMANDE (numcom),

constraint fk2_detail foreign key (numpro) references PRODUIT (numpro),

-- Contrainte qcom entre 0 et 1000:

constraint check (qcom between 0 AND 1000)

);

-- 1.2.2 AJOUT , RETRAIT ET MODIFICATION D'UNE COLONNE :

-- 1. Ajout de la colonne poids à la table PRODUIT :

alter table PRODUIT add poids decimal(6,2);

-- 2. Suppression de la colonne ville de la table CLIENT:

alter table CLIENT drop ville ;

alter table CLIENT add ville varchar(10) NOT NULL;

-- 3. Modification du type de la colonne nompro de la table PRODUIT en varchar(25):

alter table PRODUIT modify nompro varchar(25);

-- 4. Définition de la valaur qstock par défaut à 0 :

alter table PRODUIT modify qstock int(4) default 0 ;

-- 5. Changement du nom de la colonne categorie en cat :

alter table CLIENT change categorie cat varchar(10);

-- 6. Changement du nom Client en CUSTOMER .

alter table CLIENT rename CUSTOMER;


-- 1.2.3 Insertion des données :

-- Insertion table CUSTOMER :

insert into CUSTOMER(nomcli,ville,cat,compte) values

('AMINE','RABAT','A',11250.00),

('DRISS','CASABLANCA','A',12300.00),

('IMANE','MARRAKECH','D',20.00),

('YASSINE','TANGER','C',100.00),

('ZINEB','CASABLANCA','B',1000.00),

('MAROUANE','KENITRA','D',15.00),

('HOUDA','RABAT','A',15000.00),

('ALI','TANGER',NULL,0.00),

('IMANE','RABAT','B',1500.00),

('DRISS','CASABLANCA',NULL,0.00);

-- Insertion table PRODUIT :

alter table PRODUIT add typepro varchar(25);

insert into PRODUIT(typepro,nompro,prix,qstock) values

('Audio','Casques-micros',750,35),

('Informatique','Ordinateurs fixes',5400,960),

('Mobilité','Tablettes',105,830),

('Informatique','PC portables',9500,134),

('Audio','Casques Hi-Fi',1500,82),

('Informatique','Disques durs externe',985,129),

('Mobilité','Smartphones',220,540);

-- Insertion table COMMANDE :


insert into COMMANDE(numcli,datecom) values

(3,'2015-01-01'),

(9,'2015-05-10'),

(3,'2015-07-19'),

(1,'2015-09-17'),

(3,'2015-10-09'),

(6,'2015-10,09'),

(2,'2015-02-02'),

(8,'2015-05-10'),

(5,'2015-07-19'),

(2,'2015-09-17'),

(6,'2015-10-27'),

(10,'2015-10-09');

-- 1.2.3 Insertion table DETAIL :

insert into DETAIL(numcom,numpro,qcom) values

(1,1,'33'),

(2,2,'25'),

(2,3,'70'),

(3,2,'40'),

(4,1,'133'),

(4,4,'20'),

(5,1,'26'),

(5,2,'10'),

(5,5,'60'),

(6,4,'157'),

(7,1,'18'),

(7,2,'75'),

(7,4,'2'),

(7,6,'920');
-- 1.2.4 Manipulation des données :

-- 1. Modifier le nom et le prix du produit 6 par Clé USB et 100 DHS:

update produit set nompro='Clé USB', prix=100 WHERE numpro=6;

-- 2. Augmentez de 1000 DHs les comptes des clients de catégorie A :

update customer set compte=compte+1000 WHERE cat='A';

-- 3. Supprimer les clients dont le nom est Houda :

DELETE FROM customer WHERE nomcli = 'Houda';

-- 4. Diminuer de 10% les comptes supérieurs à 5000 DHs :

UPDATE customer set compte= ( compte - (compte * 0.1)) WHERE compte >= 5000;

-- 1.3.1 Requêtes simples :

-- 1. Afficher les caractéristiques des produits :

SELECT* FROM PRODUIT;

-- 2. Afficher le numéro , le nom et la ville des clients de catégorie B n'habitant pas à Rabat :

SELECT numcli,nomcli,ville FROM customer WHERE ( (cat = 'B') AND (ville <> 'Rabat') );

-- ou :

SELECT numcli,nomcli,ville FROM customer WHERE ( (cat LIKE 'B') AND (ville NOT LIKE 'Rabat') );
-- 3. Afficher les caractéristiques des produits Informatiques :

SELECT* FROM PRODUIT WHERE typepro = 'Informatique';

-- 4. Afficher les caractéristiques de tous les casques :

SELECT* FROM PRODUIT WHERE nompro LIKE 'Casque%';

-- 5. Donner le numéro , le nom et le compte des clients de Tanger et de Kenitra dont le compte est
positif :

SELECT numcli,nomcli,compte FROM customer WHERE ( (ville= 'Tanger') OR (ville= 'Kenitra') );

-- 6. Quelles Catégories de clients trouve-t-on à Casablanca :

SELECT DISTINCT cat FROM CUSTOMER WHERE ville = 'RABAT';

-- 7. Afficher le numéro, le nom et la ville des clients dont le nom précède alphabétiquement la
ville ou ils résident :

SELECT numcli,nomcli,ville FROM CUSTOMER WHERE ( nomcli < ville );

-- 8. Afficher les noms des clients qui ont un compte supérieur à 10 000 DHS tout en les triant par
odre lexicographique :

SELECT nomcli,compte FROM CUSTOMER WHERE (compte > 10000) order by nomcli asc;

-- 9. Afficher les produits dont le nom commence par C et contient micro :

SELECT* FROM PRODUIT WHERE nompro LIKE 'C%micro%';

-- 1.3.2 Requetes Logiques : Recherche des clients qui :


-- 1. Habitent à Rabat ou à Casablanca :

SELECT* FROM customer WHERE ville in('Rabat','Casablanca');

-- 2. N'habitent ni à Rabat ni à Casablanca :

SELECT* FROM customer WHERE ville NOT in('Rabat','Casablanca');

-- 3. de catégorie D habitant à Marrakech :

SELECT* FROM customer WHERE cat='D' AND ville='MARRAKECH';

-- 4. de catégorie C ou habitant à Casablanca :

SELECT* FROM customer WHERE cat='C' OR ville='Casablanca';

-- 5. de catégorie C n'habitant pas à Casablanca :

SELECT* FROM customer WHERE cat='C' AND ville <> 'Casablanca';

-- 6. qui n'ont pas été sélectionnés dans la question précédente :

SELECT* FROM customer WHERE cat <> 'C' OR ville ='CASABLANCA' OR cat = NULL;

-- 7. qui soit sont de catégorie B ou C , soit habitent à Rabat ou à Kenitra ( ou les deux conditions ).

SELECT* FROM customer WHERE cat in('B','C') OR ville in('Rabat','Kenitra');

-- 8. qui soit sont de catégorie B ou C , soit habitent à Rabat ou à Kenitra (mais pas les deux
conditions) .
SELECT*

FROM customer

WHERE ( cat in('B','C') AND ville NOT in ('Rabat','Kenitra') )

OR ( cat NOT in ('B','C') AND ville in ('Rabat','Kenitra'));

SELECT* FROM customer WHERE cat in('B','C') XOR ville in('Rabat','Kenitra');

-- 9. qui sont de catégorie B ou C , et qui habitent à Tanger ou à Casablanca :

SELECT* FROM customer WHERE cat in ('B','C') AND ville in ('Tanger','Casablanca');

-- 10. qui n'ont pas été sélectionnés dans la question précédente :

SELECT* FROM customer WHERE cat NOT in ('B','C') OR ville NOT in ('Tanger','Casablanca');

-- 11. qui n'ont pas de catégorie ou dont le compte est négatif ( mais pas les deux ) :

SELECT* FROM customer WHERE cat = NULL XOR compte <= 0;

-- 12. Afficher le numéro et la date des commandes qui sont réalisées entre les dates : 05/06/2015
et 15/09/2015 :

SELECT numcli as Numéro_Client,datecom as Date_Commande FROM COMMANDE WHERE datecom


between '2015-06-05' AND '2015-09-15';

-- 1.3.3 Sous Requetes :

-- 1. Afficher les numéros des clients qui commandent le produit de numéro 4 :

SELECT numcli
FROM COMMANDE

WHERE numcom in (

SELECT numcom

FROM DETAIL

WHERE numpro = 4);

-- 2.Afficher les villes des clients qui commandent le produit numéro 6:

SELECT ville

FROM customer

WHERE numcli in (

SELECT numcli

FROM COMMANDE

WHERE numcom in (

SELECT numcom

FROM DETAIL

WHERE numpro = 6 ) );

-- 3. Quels sont les Casques qui font l'objet d'une commande :

SELECT*

FROM PRODUIT

WHERE numpro in (

SELECT numpro

FROM DETAIL

AND nompro LIKE '%Casque%';

-- 4.Dans quelles villes a-t-on commandé en Novembre 2015 :

SELECT ville
FROM customer

WHERE numcli in (

SELECT numcli

FROM COMMANDE

WHERE datecom LIKE '2015-11-%');

-- 5. Afficher les commandes qui spécifient une quantité du produit 1 inférieure à celle

--que spécifie la commande 4 pour ce mme produit :

SELECT*

FROM commande

WHERE numcom in (

SELECT numcom

FROM detail

WHERE qcom < (

SELECT qcom

FROM detail

WHERE numcom = 4 AND numpro = 1)

AND numpro = 1);

SELECT*

FROM commande

WHERE numcom in (

SELECT numcom

FROM detail as D1

WHERE D1.qcom < (

SELECT qcom

FROM detail as D2

WHERE D2.numcom = 4 AND numpro = 1)

AND D1.numpro = 1);

-- 6. Afficher les commandes qui ne spécifient pas le produit 3 ;

--celles pour lesquelles il n'existe aucun détail spécifiant le produit 3 :


SELECT*

FROM commande

WHERE numcom NOT IN (

SELECT numcom

FROM detail

WHERE numpro = 3);

-- 7. Afficher les commandes qui spécifient des produits différents du produit 3 :

SELECT*

FROM commande

WHERE numcom IN (++

SELECT numcom

FROM detail

WHERE numpro <> 3);

-- 1.3.4 Quantificateurs ensemblistes :

-- 1. Afficher le numéro et le nom du produit dont le prix est inférieur à n'importe quel prix

--des produits de la commande numéro 2:

SELECT numpro, nompro

FROM produit

WHERE prix < any (

SELECT prix

FROM produit

WHERE numpro in (

SELECT numpro

FROM detail

WHERE numcom = 2))


AND numpro NOT in (SELECT numpro

FROM detail

WHERE numcom =2);

-- 2. Afficher le numéro et le nom du produit dont le prix est inférieur à tous les prix

--des produits de la commande numéro 3:

SELECT numpro, nompro

FROM produit

WHERE prix < ALL (

SELECT prix

FROM produit

WHERE numpro in (

SELECT numpro

FROM detail

WHERE numcom = 3));

-- 1.4.1 Fonctions agrégatives :

-- 1.Afficher la valeur totale des stocks (compte non tenu des commandes actuelles) :

sum()

min()

max()

avg

SELECT sum(qstock) as Total_stocké

FROM produit;

-- 2. Dans combien de ville trouve-t-on des clients de catégorie D :

SELECT count(DISTINCT ville) as Nombre_Villes

FROM customer
WHERE cat='D';

-- 3. Afficher le total, le minimum, la moyenne et le maximum des comptes des clients :

SELECT SUM(compte) as Total, MIN(compte) as Minimum, MAX(compte) as Maximum

FROM customer;

-- 1.4.2 Jointures :

-- 1. Afficher les numéros des clients qui commandent le produit de numéro 4:

SELECT numcli

FROM commande, detail

WHERE commande.numcom = detail.numcom

AND numpro = 4;

SELECT numcli

FROM (commande natural join detail)

WHERE numpro = 4;

-- 2. Afficher les villes des clients qui commandent le produit de numéro 6:

SELECT ville

FROM customer natural join commande natural join detail

WHERE numpro = 6;

-- 3. Quels sont les casques qui font l'objet d'une commande :

SELECT DISTINCT nompro as Casques_commandés

FROM produit natural join detail natural join commande

WHERE nompro LIKE '%Casque%' AND qcom >0;


SELECT DISTINCT nompro as Casques_commandés

FROM produit natural join detail

WHERE nompro LIKE '%Casque%';

-- 4. Dans quelles villes a-t-on commandé en Novembre 2015 :

SELECT DISTINCT ville

FROM customer natural join commande

WHERE datecom LIKE '2015-10%';

-- 5. Afficher le nom et villes des clients triés par ordre alphabétique, qui ont achetés des casques :

SELECT DISTINCT nomcli , ville

FROM customer natural join commande natural join detail natural join produit

WHERE nompro LIKE '%Casque%'

order by nomcli asc;

-- 1.4.3 Jointures, sous requetes et fonctions agrégatives :

-- 1. Donner le numéro et le nom des clients de Rabat qui n'ont pas passé de commandes :

SELECT customer.numcli, nomcli

FROM customer,commande

WHERE customer.numcli = commande.numcli

AND customer.numcli NOT in (SELECT numcli FROM commande);

-- 2. Afficher le numéro et le nom des clients qui n'ont pas commandé des casques :

SELECT customer.

SELECT DISTINCT customer.numcli, nomcli


FROM customer join commande on commande.numcli = customer.numcli

join detail on detail.numcom = commande.numcom

join produit on detail.numpro = produit.numpro

WHERE nompro NOT LIKE '%Casque%';

-- 3. Rechercher les villes dans lesquelles on n'a pas commandé le produit 3:

SELECT DISTINCT(ville)

FROM customer

WHERE ville NOT in (SELECT

FROM customer natural join commande natural join detail

WHERE numpro = 3);

-- 4. Calculer le montant commandé des produits informatiques :

SELECT sum(qcom*prix) as Montant_commandé

FROM produit natural join detail

WHERE typepro LIKE '%Informatique%';

-- 5. Calculer le montant de chaque détail de commande du client 2:

SELECT qcom*prix

FROM commande natural join detail natural join produit

WHERE numcli = 2;

-- 6. Combien y a-t-il de commandes spécifiant un (ou plusieurs) produit(s) informatiques ? :

SELECT count(DISTINCT numcom)

FROM detail natural join produit

WHERE typepro LIKE '%Informatique%';


-- 7. Quels sont les produits (numéro et nom) qui n'ont pas été commandés en 2015 :

SELECT numpro, nompro

FROM detail natural join produit natural join commande

WHERE datecom NOT LIKE '2015-09%';

SELECT numpro,nompro

FROM produit

WHERE numpro in ( SELECT numpro

FROM detail

WHERE numcom in ( SELECT numcom

FROM commande

WHERE datecom NOT LIKE


'2015-09%'));

SELECT numpro, nompro

FROM produit

WHERE numpro NOT in ( SELECT numpro FROM detail WHERE numcom in

( SELECT numcom FROM commande WHERE datecom


like '2015%'));

-- 1.5.1 Regroupements :

-- 1. Calculer, pour chaque ville , le nombre de catégories distinctes :

SELECT ville,count(DISTINCT cat)

FROM customer

GROUP BY ville;

-- 2. Afficher le total et la moyenne des comptes des clients , ainsi que le nombre de clients ,

-- selon chacune des classifications suivantes :


-- a. par catégorie :

SELECT sum(compte) as Total, avg(compte) as Moyenne,count(*),cat

FROM customer

WHERE cut is NOT NULL

GROUP BY cat;

-- b. par catégorie dans chaque ville :

SELECT sum(compte) as Total, avg(compte) as Moyenne,count(*),cat,ville

FROM customer

WHERE cat is NOT NULL

GROUP BY ville,cat;

-- 1.5.2 Regroupements et jointures :

-- 1. Calculer, par jour, le total des montants des commandes :

SELECT datecom, sum(qcom*prix) as Total_commandé

FROM commande natural join detail natural join produit

GROUP BY datecom;

-- 2. Afficher pour chaque ville, les noms des produits qui y sont commandés tout en triant les villes

-- et les noms des produits par ordre lexicographique :

SELECT DISTINCT ville as Ville, nompro as Nom_Produit

FROM customer natural join commande natural join detail natural join produit

GROUP BY ville,nompro

order by ville,nompro;

-- 3. Afficher, pour chaque ville et pour chaque catégorie :


-- a. le nombre de commandes passées par les clients de cette ville et de cette catégorie :

-- b. le montant total de ces commandes :

SELECT ville,cat as Catégorie, count(ville), count(cat), sum(qcom*prix)

FROM customer natural join commande natural join detail natural join produit

GROUP BY ville,cat;

SELECT ville, count(DISTINCT numcom) as Nombres_commandes, sum(qcom*prix) as


Montant_commandé

FROM customer natural join commande natural join detail natural join produit

GROUP BY ville

order by ville asc;

SELECT ville,cat,count(DISTINCT numcom),sum(prix*qcom) as montant

FROM customer natural join commande natural join detail natural join produit

GROUP BY ville,cat;

-- 4. Afficher, pour chaque catégorie de client, le nombre de produits

-- qui ont été commandés le 2015-10-27 :

SELECT cat,count(DISTINCT numpro)

FROM customer natural join commande natural join detail

WHERE datecom LIKE '2015%'

GROUP BY cat;

SELECT cat,sum(qcom)

FROM customer natural join commande natural join detail

WHERE datecom LIKE '2015%'


GROUP BY cat;

-- 1.5.3 Regroupements, jointures et sous-requetes :

-- 1. Donner pour chaque ville dans laquelle se trouve au moins un client de catégorie 'B'

--la liste des produits informatiques qu'on y a commandés :

SELECT ville,numcli,nompro,typepro,cat

FROM customer natural join commande natural join detail natural join produit

WHERE ville in (SELECT ville

FROM customer

WHERE cat ='B')

AND typepro ='Informatique';

GROUP BY ville;

SELECT*

FROM customer

WHERE cat ='B'

-- 1.5.4 Conditions sur les regroupements :

-- 1. Donner pour chaque produit la liste des villes dans lesquelles ce produit est commandé

--en plus de 500 unités :

SELECT nompro,ville

FROM customer natural join commande natural join detail natural join produit

WHERE qcom >= 100

GROUP BY nompro;

-- 2. Afficher, pour chaque localité, les produits qu'on y commande et qui sont aussi dans au moins

-- une autre localité :


SELECT ville,numpro,nompro,typepro

FROM customer natural join commande natural join detail natural join produit

WHERE numpro in (SELECT numpro

FROM customer natural join commande natural join detail natural


join produit

GROUP BY numpro

having (count(DISTINCT ville))>1)

GROUP BY ville,numpro;

-- TP 6 :

-- 1- Creer une base de données appelée BD_ENTREPRISE :

CREATE database BD_ENTREPRISE;

USE BD_ENTREPRISE;

-- 2- Creer les tables de la base de données nouvellement crée :

-- 3- Ajouter les clés primaires et les clés étrangères lors de la création des tables :

CREATE TABLE Departement (

Numdept int PRIMARY KEY AUTO_INCREMENT,

Nomdept VARCHAR(25),

Lieu VARCHAR(25)

);

CREATE TABLE Employe (

Matr int(3) primary key ,

nomE varchar(25),

Poste varchar(15),

Sup int(3) ,

DatEmb date ,

Salaire decimal(10,2),

Commission decimal(10,2),
NumDept int ,

CONSTRAINT fk_employe FOREIGN KEY (NumDept) REFERENCES Departement (Numdept)

);

-- 4- Remplir les tables par les données :

insert into employe(matr,nomE,poste,sup,DatEmb,salaire,commission,numdept)

values

(369,"amine","sectretaire",902,"1980-12-02",6400.00,NULL,2),

(499,"houda","commercial",698,"1981-02-20",12800.00,2400.00,3),

(521,"karim","commercial",698,"1981-10-22",10000.00,4000.00,3),

(566,"ali","directeur",839,"1981-03-02",23000.00,NULL,2),

(654,"zakaria","commercial",698,"1981-05-28",10000.00,11200.00,3),

(698,"meryem","directeur",839,"1981-05-01",22800.00,NULL,3),

(782,"zineb","directeur",839,"1981-06-09",19600.00,NULL,1),

(788,"khalid","ingenieur",566,"1985-04-14",24000.00,NULL,2),

(839,"abdellah","president",NULL,"1981-11-17",40000.00,NULL,1),

(844,"mohamed","commercial",698,"1981-05-08",12000.00,0.00,3),

(876,"sarah","secretaire",788,"1985-05-10",8800.00,NULL,2),

(900,"sanae","secretaire",698,"1981-12-03",7600.00,NULL,3),

(902,"imane","ingenieur",566,"1981-12-17",24000.00,NULL,2),

(934,"mehdi","sectretaire",782,"1982-08-23",10400.00,NULL,1);

INSERT INTO departement(numdept,nomdept,lieu)

VALUES

(1,"finances","rabat"),

(2,"recherches","casablanca"),

(3,"ventes","fes"),

(4,"fabrication","kenitra");

-- Ecrire les requetes SQL qui affichent les informations suivantes :


-- a- Noms des employés dont le salaire est inférieur à la commission :

SELECT nomE FROM employe WHERE Salaire < commission;

-- b- Noms des employés qui ne touchent pas de commission :

SELECT nomE FROM employe WHERE commission is NULL ;

-- c- Noms des emplyés dont la 2eme lettre est un E :

SELECT nomE FROM employe WHERE nomE like '_E%';

-- d- Noms des employés qui touchent entre 12,000 et 18,000 :

SELECT nomE FROM employe WHERE Salaire + commission between 12000 AND 18000;

-- e- Noms des emplyés et lieu ou ils travaillent :

SELECT nomE, lieu FROM employe, departement

WHERE employe.numdept=departement.numdept;

-- f- Lieu des départements dans lesquels des emplyés touchent une commission :

SELECT DISTINCT lieu FROM employe, departement

WHERE employe.numdept=departement.numdept

AND commission is NOT NULL OR commission <> 0;

-- g- Nom des employés qui sont le supérieur d'un autre employée :

SELECT DISTINCT s.nomE

FROM employe s
WHERE s.matr in (SELECT e.sup

FROM employe e);

-- h- Noms et lieux des départements dans lesquels il y a au moins un ingénieur (jointures et


sous_interrogations) :

SELECT DISTINCT nomdept, lieu

FROM departement NATURAL JOIN employe

WHERE poste = 'INGENIEUR'

group by numdept

having count(poste)>=2;

SELECT nomdept, lieu

FROM departement

WHERE numdept in (SELECT numdept

FROM employe

WHERE poste='ingenieur'

group by numdept

having count(poste) > 1);

SELECT DISTINCT nomdept, lieu

FROM departement NATURAL JOIN employe

WHERE poste = 'INGENIEUR'

group by matr;

SELECT nomdept, lieu FROM departement

WHERE numdept in (SELECT numdept

FROM employe

WHERE poste = 'INGENIEUR');


-- i- Noms et lieux des départements dans lesquels il n'y a pas d'ingenieur :

SELECT nomdept, lieu

FROM departement

WHERE numdept NOT in (SELECT numdept FROM employe WHERE poste = 'INGENIEUR');

-- j- Noms des emplyés qui gagnent plus que tous les commerciaux :

SELECT nomE

FROM employe

WHERE Salaire > ALL (SELECT Salaire FROM employe WHERE poste ='COMMERCIAL');

-- k- Noms des employés qui gagnent plus que tous les commerciaux de leur département :

SELECT nomE

FROM employe e

WHERE Salaire > ALL (SELECT Salaire FROM employe WHERE poste='COMMERCIAL' AND numdept
=e.numdept );

SELECT nomE,Salaire

FROM employe

WHERE numdept in (SELECT numdept

FROM employe

WHERE poste='COMMERCIAL')

AND Salaire>ALL (SELECT Salaire

FROM employe

WHERE poste='COMMERCIAL');

-- l- Nombre d'employés de chaque département :


SELECT numdept, count(*) as Nombre_employes

FROM employe

GROUP BY numdept ;

-- m- Total des salaires des employés qui ont le meme superieur direct que Zakaria :

SELECT sum(Salaire) FROM employe

WHERE sup = (SELECT sup

FROM employe

WHERE nomE='Zakaria');

-- n- Nom de l'employé qui a le plus gros salaire :

SELECT nomE, Salaire

FROM employe

WHERE Salaire = (SELECT max(Salaire)

FROM employe) ;

Vous aimerez peut-être aussi