Vous êtes sur la page 1sur 3

Code SQL: ORACLE : Requêtes Group By Et Having

La base de données departments_Employ est composée par deux tables principales :


"departments" et "employees".

1) La table "departments" contient des informations sur les départements d'une


organisation, avec les attributs suivants :
department_id : Identifiant unique du département (clé primaire).
department_name : Nom du département.
location : Emplacement du département.
2) La table "employees" stocke des informations sur les employés de l'organisation,
) ) avec les attributs suivants :
employee_id : Identifiant unique de l'employé (clé primaire).
employee_name : Nom de l'employé.
job : Poste occupé par l'employé.
manager_id : Identifiant de l'employé responsable (s'il y en a un).
hiredate : Date d'embauche de l'employé.
salary : Salaire de l'employé.
commission : Montant de la commission éventuelle de l'employé.
department_id : Identifiant du département auquel l'employé est affecté (clé étrangère
faisant référence à la table "departments").

1) Insérez le code du tableau 1 dans SQLLive, puis exécutez-le.


2) Supprimez le code après exécution.
3) Ajoutez les données du tableau 2 dans SQLLive.
4) Supprimez les requêtes après exécution.
5) Insérez les données du tableau 3 dans SQLLive.
6) Effacez les requêtes après exécution.
7) Exécutez les requêtes pour vérifier l'insertion correcte des données et pour
visualiser la structure de la table.

Select * from employees ;


Desc employees ;
Select * from departments ;
Desc departments ;
Tableau 1

--DROP TABLE employees CASCADE CONSTRAINT;


--DROP TABLE departments CASCADE CONSTRAINT;

CREATE TABLE departments (


department_id NUMBER(2) CONSTRAINT departments_pk PRIMARY KEY,
department_name VARCHAR2(14),
location VARCHAR2(13)
);

CREATE TABLE employees (


employee_id NUMBER(4) CONSTRAINT employees_pk PRIMARY KEY,
employee_name VARCHAR2(10),
job VARCHAR2(9),
manager_id NUMBER(4),
--hiredate : date d'embauche--
hiredate DATE,
salary NUMBER(7,2),
commission NUMBER(7,2),
department_id NUMBER(2) CONSTRAINT emp_department_id_fk REFERENCES
departments(department_id)
);

Tableau 2

INSERT INTO departments VALUES (10,'ACCOUNTING','NEW YORK');


INSERT INTO departments VALUES (20,'RESEARCH','DALLAS');
INSERT INTO departments VALUES (30,'SALES','CHICAGO');
INSERT INTO departments VALUES (40,'OPERATIONS','BOSTON');

Tableau 3

INSERT INTO employees VALUES (7369,'SMITH','CLERK',7902,to_date('17-12-


1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO employees VALUES (7499,'ALLEN','SALESMAN',7698,to_date('20-2-
1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO employees VALUES (7521,'WARD','SALESMAN',7698,to_date('22-2-
1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO employees VALUES (7566,'JONES','MANAGER',7839,to_date('2-4-
1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO employees VALUES (7654,'MARTIN','SALESMAN',7698,to_date('28-
9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO employees VALUES (7698,'BLAKE','MANAGER',7839,to_date('1-5-
1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO employees VALUES (7782,'CLARK','MANAGER',7839,to_date('9-6-
1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO employees VALUES (7788,'SCOTT','ANALYST',7566,to_date('13-JUL-
87','dd-mm-rr')-85,3000,NULL,20);
INSERT INTO employees VALUES (7839,'KING','PRESIDENT',NULL,to_date('17-11-
1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO employees VALUES (7844,'TURNER','SALESMAN',7698,to_date('8-9-
1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO employees VALUES (7876,'ADAMS','CLERK',7788,to_date('13-JUL-
87', 'dd-mm-rr')-51,1100,NULL,20);
INSERT INTO employees VALUES (7900,'JAMES','CLERK',7698,to_date('3-12-
1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO employees VALUES (7902,'FORD','ANALYST',7566,to_date('3-12-
1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO employees VALUES (7934,'MILLER','CLERK',7782,to_date('23-1-
1982','dd-mm-yyyy'),1300,NULL,10);

1) Pour chaque département, combien d'employés sont présents, quel est le salaire moyen et
quelle est la somme totale des salaires de ces employés ?
2) Pour chaque département et chaque poste, combien d'employés sont présents, quel est le
salaire moyen et quelle est la somme totale des salaires de ces employés ?"
3) **Combien d'employés y a-t-il dans chaque département ?**
4) **Quel est le salaire moyen pour chaque poste (job) ?**
5) **Dans quels départements y a-t-il plus de 2000 de salaire moyen par employé ?**
6) **Quel département a le salaire moyen le plus élevé, avec un salaire moyen supérieur à 2500 ?**
7) **Quels sont les départements avec plus de 3 employés et un salaire moyen supérieur à 2000?**
8) **Quels postes ont plus de 2 employés et un salaire moyen supérieur à 2500 ?**
9) **Quels sont les départements avec plus de 2 employés et un salaire moyen supérieur à

La clause HAVING est utilisée pour filtrer les résultats d'une requête GROUP BY basée
sur une condition spécifiée.

**Ensemble LIKE, HAVING, et ORDER BY :**

10) **Question :** Comment récupérer les employés dont le nom commence par "S" et dont le salaire
moyen est supérieur à 2500 ?

11) **Question :** Combien de départements ont la lettre 'S' dans leur nom et ont au moins un
employé?

12) **Question :** Quelle est la moyenne des salaires pour chaque département où le nom de
l'employé commence par 'S' et la commission est supérieure à 300, et où la moyenne des
salaires dépasse 1000 ?

Vous aimerez peut-être aussi