Extraction de Données

SQL, Database, Data Extraction · course

Voir tous les documents en bases de données

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Le langage SQL

Langage d’Int´errogation de Donn´ees

Ines BAKLOUTI

[email protected]

Ecole Sup´erieure Priv´ee d’Ing´enierie et de Technologies

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Plan

1 Extraction de donn´ees

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

2 Les fonctions

Les fonctions mono-ligne

Les fonctions de caract`eres

Les fonctions num´eriques

Les fonctions de dates

Les fonctions de conversion

Autres fonctions

Les fonctions analytiques

Les fonctions multi-lignes

3 Les sous int´errogations

Les sous-int´errogations monoligne

Les sous-int´errogations multi-lignes

4 Les jointures

Jointure interne

Jointure externe

Equijointure / Non-´equijointure

Auto-jointure

Jointure naturelle

Produit cart´esien

5 Les op´erateurs ensemblistes

L’op´erateur UNION

L’op´erateur UNION ALL

L’op´erateur INTERSECT

L’op´erateur MINUS

2/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Plan

1 Extraction de donn´ees

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

2 Les fonctions

3 Les sous int´errogations

4 Les jointures

5 Les op´erateurs ensemblistes

3/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Instruction SELECT

Syntaxe

SELECT * | { [DISTINCT] <colonne> | <expression> [alias],...}

FROM <nom table>;

SELECT : indique les colonnes `a afficher

DISTINCT : supprime les doublons

FROM : indique les tables contenant les colonnes

Exemple 1

SELECT * FROM departments;

4/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Instruction SELECT

Exemple 2

SELECT department id, department name FROM departments;

Exemple 3

SELECT DISTINCT department id FROM employees;

5/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Expressions arithm´etiques

Expressions contenant des donn´ees de type NUMBER, DATE et des

op´erateurs arithm´etiques

Exemple

SELECT last name, first name, salary+1000, commission pct*100 FROM employees;

6/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Valeur NULL

NULL repr´esente une valeur non disponible, non affect´ee

NULL est diff´erente de z´ero, espace ou chaˆıne vide

Exemple

SELECT last name, first name, commission pct FROM employees;

7/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Valeur NULL et expressions arithm´ethiques

Les expressions arithm´etiques comportant une valeur NULL

renvoient toujours une valeur NULL

Exemple

SELECT last name, salary, salary+commission pct, salary*commission pct FROM employees;

8/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Allias de colonne

Un alias de colonne :

Renomme un entˆete de colonne

Est utile avec les calculs

Suit imm´ediatement le nom d’une colonne (le mot cl´e facultatif AS peut ´egalement

ˆetre utilis´e entre le nom de la colonne et l’alias)

N´ecessit´e des guillemets (”alias”) s’il contient des espaces ou des caract`eres sp´eciaux

(# $), ou s’il distingue les majuscules des minuscules

Exemple

SELECT last name nom, first name AS pr´enom, salary*12 ”revenu annuel” FROM employees;

9/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateur de concat´enation

Concatene des colonnes ou des chaines de caracteres

Est repr´esent´e par le symbole ||

La colonne r´esultante est une expression de type carat`ere

Exemple

SELECT department id||’ ** ’||department name AS ”d´epartement” from departments;

10/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Restriction de donn´ees: la clause WHERE

Restreindre les lignes renvoy´ees `a l’aide la clause WHERE

Syntaxe

SELECT * | { [DISTINCT] <colonne> | <expression> [alias],...}

FROM <nom table>

[WHERE <condition(s)>];

Exemple

SELECT employee id, last name, department id

FROM employees

WHERE department id= 80;

11/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Chaˆınes de caract`eres et dates

Les chaˆınes de caract`eres et les dates sont incluses entre apostrophes.

Les valeurs de type caract`ere distinguent les majuscules des minuscules

Les valeurs de type date sont sensibles au format

Le format de date par d´efaut est DD-MM-RR

Exemples

1 SELECT employee id,first name FROM employees WHERE first name=’James’;

2 SELECT employee id,first name FROM employees WHERE first name=’JAMES’;

=> aucune ligne s´electionn´ee

12/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs de comparaison

13/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs de comparaison

L’op´erateur BETWEEN

Exemple 1

SELECT first name, salary FROM employees

WHERE salary BETWEEN 15000 AND 20000;

Exemple 2

SELECT first name, salary FROM employees

WHERE first name BETWEEN ’V’ AND ’X’;

Publicité

14/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs de comparaison

L’op´erateur IN

Exemple 1

SELECT first name, department id FROM employees

WHERE department id IN (10,20);

Exemple 2

SELECT first name, last name FROM employees

WHERE first name IN (’James’,’David’,’Diana’);

15/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs de comparaison

L’op´erateur LIKE

L’op´erateur LIKE permet de rechercher des chaˆınes de caracteres a l’aide de caract`eres

g´en´eriques

Les conditions de recherche peuvent contenir des caract`eres ou des nombres litt´eraux

% repr´esente Z´ero ou plusieurs caract`eres

repr´esente un caract`ere

Exemple

SELECT first name FROM employees

WHERE first name LIKE ’S e%’ ;

16/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs de comparaison

L’op´erateur IS NULL

L’op´erateur IS NULL permet de tester la pr´esence de valeurs NULL.

Exemple

SELECT first name, manager id FROM employees

WHERE manager id IS NULL;

17/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs logiques

18/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs logiques

L’op´erateur AND

Exemple

SELECT last name, job id, salary FROM employees

WHERE salary >=10000 AND job id LIKE ’%MAN%’;

19/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs logiques

L’op´erateur OR

Exemple

SELECT last name, job id, salary FROM employees

WHERE salary >=10000 OR job id LIKE ’%MAN%’;

20/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs logiques

L’op´erateur NOT

Exemple

SELECT last name, job id FROM employees

WHERE job id NOT IN (’IT PROG’, ’ST CLERK’, ’SA REP’) ;

21/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs logiques

R`egles de priorit´e

22/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Op´erateurs logiques

R`egles de priorit´e

Exemple 1

SELECT last name, job id, salary FROM employees

WHERE job id= ’SA MAN’ OR job id= ’AD VP’ AND salary > 12000;

Exemple 1

SELECT last name, job id, salary FROM employees

WHERE ( job id= ’SA MAN’ OR job id= ’AD VP’ ) AND salary > 12000;

23/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Tri de donn´ees: la clause ORDER BY

La clause ORDER BY:

permet de triez les lignes extraites

ASC : ordre croissant (par d´efaut)

DESC : ordre d´ecroissant

toujours la derni`ere clause dans l’instruction SELECT

Syntaxe

SELECT * | { [DISTINCT] <colonne> | <expression> [alias],...}

FROM <nom table>;

[ WHERE condition(s) ]

[ORDER BY {<colonne>, <expression>, <alias>} [ASC | DESC] ] ;

Exemple 1: tri par ordre d´ecroissant

SELECT last name, hire date FROM employees

ORDER BY hire date DESC ;

–ou bien ORDER By 2 DESC

24/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Instruction SELECT

Restriction de donn´ees

Tri de donn´ees

Tri de donn´ees: la clause ORDER BY

Exemple 2: tri par alias de colonne

SELECT employee id, last name, salary*12 ”Salaire Annuel”

FROM employees

ORDER BY ”Salaire Annuel”;

–ou bien ORDER By 3

Exemple 3: tri selon plusieurs colonnes

SELECT employee id, last name, salary*12 ”Salaire Annuel”

FROM employees

ORDER BY ”Salaire Annuel”, last name DESC;

—ou bien ORDER By 3, 2 DESC

25/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Plan

1 Extraction de donn´ees

4 Les jointures

2 Les fonctions

5 Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

3 Les sous int´errogations

26/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions

Il existe 3 types de fonctions dans le language SQL

Fonctions mono-ligne: manipulent une seule ligne et ram`enent un

seul r´esultat

Fonctions analytiques: manipulent plusieurs lignes et ram`enent un

plusieurs r´esultats

Fonctions multi-lignes: manipulent plusieurs lignes et ram`enent un

seul r´esultat

27/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de caract`eres

Fonctions de conversion majuscules/minuscules

Exemple

SELECT first name, lower(first name) , upper(first name), initcap(first name) FROM employees;

28/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de caract`eres

Fonctions de manipulation de caract`eres

Publicité

29/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de caract`eres

Fonctions de manipulation de caract`eres

Exemple

SELECT first name, last name, job id,

CONCAT(first name,last name) ”Nom et pr´enom”,

LENGTH (last name) ”longueur nom”,

INSTR(last name,’a’) ”position a”,

LPAD(last name,10,’*’),

RPAD(last name,10,’*’)

FROM employees

WHERE SUBSTR(job id, 4) = ’REP’;

30/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions num´eriques

31/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions num´eriques

Exemple

SELECT commission pct+0.2,

ROUND(commission pct+0.2),

TRUNC(commission pct+0.2),

FLOOR(commission pct+0.2),

CEIL(commission pct+0.2)

FROM employees where department id=80;

32/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de dates

Dans la base de donn´ees Oracle, les dates sont stock´ees dans un

format num´eriques interne: si`ecle, ann´ee, mois, jour, heures, minutes

et secondes

Le format de date par d´efaut est ’DD-MON-YY’

SYSDATE est une fonction qui renvoie :

La date

L’heure

33/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de dates

Calcul arithm´etique sur les dates

Calcul arithm´etique sur des dates:

ajout ou soustraction d’un nombre de jour `a une date afin d’obtenir une date

r´esultante

Ajout ou soustraction d’un nombre d’heures `a une date en divisant le nombre d’heures

par 24

soustraction d’une date d’une autre afin de d´eterminer le nombre de jours entre les

deux dates

Exemple

SELECT first name,

(SYSDATE-hire date) AS jours,

(SYSDATE-hire date)/7 AS semaines

FROM employees;

34/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de dates

35/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de dates

Exemple

SELECT systimestamp,

extract(year from systimestamp) as Ann´ee,

extract(month from systimestamp) as Mois,

extract(day from systimestamp) as Jour,

extract(hour from systimestamp) as Hour,

extract(minute from systimestamp) as Minutes,

extract(second from systimestamp) as Secondes

FROM dual;

36/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de conversion

Conversion implicite

Pour les affectations, le serveur Oracle peut convertir

automatiquement les types de donn´ees suivants:

L’expression salary=‘2000’ entraˆıne la conversion implicite de la

chaˆıne ‘2000’ en valeur num´erique 2000

L’expression hire date>’01-Jan-90’ entraˆıne la conversion implicite

de la chaˆıne ’01-Jan-90’ en date

37/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de conversion

Conversion explicite

38/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de conversion

Conversion explicite: fonction TO CHAR

39/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de conversion

Conversion explicite:fonction TO CHAR

Exemple 1

SELECT last name, TO CHAR(hire date, ’fm DD Month YYYY’) AS HIREDATE FROM

employees;

fm permet de supprimer les espaces de remplissage ou les z´eros de

d´ebut

Exemple 2

SELECT first name, TO CHAR(salary, ’$99,000.00’) SALARY FROM employees;

40/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions de conversion

Conversion explicite:fonctions TO DATE / TO NUMBER

Exemple 1

select first name, hire date from emp

where hire date>to date(’01/01/1982’,’DD-

MM-YYYY’);

Exemple 2

Select first name, salary from employees

where salary>=to number(’15000’);

41/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Autres fonctions

Fonction DECODE

La fonction decodepermet de faire un traitement conditionnel sur les donn´ees :

Syntaxe

Decode (expr, val1, res1, val2, res2, . . . . ValN, resN, default)

retourne res1 si expr = val1, res2 si expr=val2,...,resN si expr=valN sinon default

Exemple

SELECT first name,department id, decode(department id,10, ’ACCOUNTING’, 20, ’RESEARCH’,

’DEP. INCONNU ’) AS ”NOM DEPARTEMENT” FROM employees;

42/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Autres fonctions

Fonction NVL / NVL2

NVL(expr,val): retourne val si expr est NULL

NVL2(expr,val1,val2): retourne val1 si expr est NOT NULL et val2 si expr est NULL

expr peut ˆetre de type date, les caract`ere et valeur num´erique. Les types de donn´ees de expr

et val doivent correspondre.

Exemple

SELECT first name, salary, commission pct,

NVL(commission pct,0),

NVL(to char(commission pct), ’Pas de commission’) AS ”commission ?”,

NVL2(commission pct,commission pct*salary,0) AS ”commision”,

to char(NVL2(commission pct,commission pct*100/salary,0)) || ’%’ AS ”pourcentage commission”

FROM employees;

43/90

Extraction de donn´ees

Les fonctions

Publicité

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Autres fonctions

Fonction NULLIF

NULLIF (expr1, expr2) : retourne NULL si expr1= expr2, sinon

retourne expr1

Exemple

SELECT first name, LENGTH(first name) nbr1, last name, LENGTH(last name) nbr2,

NULLIF(LENGTH(first name), LENGTH(last name)) result FROM employees;

44/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Autres fonctions

Fonction COALESCE

Coalesce (exp1,expr2,expr3,. . . ) : retourne la premi`ere valeur non

nulle

Exemple

select Coalesce(NULL,1,NULL,7) from dual;

=> retourne 1

45/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Autres fonctions

Fonction CASE

La fonction case ´evalue une liste de conditions et retourne un r´esultat parmi les cas possibles

Syntaxe

1 case <expression>

when <valeur1> then <resultat1>

.

.

.

when <valeurN> then <resultatN>

else resultat

end

2 case

when <condition1> then <resultat1>

.

.

.

when <conditionN> then <resultatN>

else resultat

end

46/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Autres fonctions

Fonction CASE

Exemple

SELECT first name, department id,

case department id

when 10 then ’Accounting’

when 20 then ’RESEARCH’

else ’INCONNU’

end as departement

FROM employees;

47/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions analytiques

Les fonctions analytiques calculent une valeur globale bas´ee sur un groupe de lignes. Ils

diff`erent des fonctions de groupe (ou d’agr´egation) en ce qu’ils renvoient plusieurs lignes

pour chaque groupe.

Les fonctions analytiques sont la derniere s´erie d’op´erations effectu´ees dans une requˆete a

l’exception de la clause finale ORDER BY. Par cons´equent, elles analytiques ne peuvent

apparaˆıtre que dans la liste de s´election ou clause ORDER BY.

Syntaxe d’une fonction analytique

fonction analytique(expression) OVER( [clause partitionnement] [clause ordre])

clause partitionnement: sous forme PARTITION BY expression1,expression2,...,expressionN

: d´efinit les groupes de partitionnement

clause ordre: sous forme ORDER BY expression1,expression2,...,expressionN

[NULLSFIRST|LAST] : d´efinit l’ordre `a l’int´erieur de chaque partition

NULLSFIRST/LAST: indique si les valeurs nulles seront en premier ordre/dernier

ordre

48/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions analytiques

Fonction ROW NUMBER()

La fonction row number() retourne le num´ero s´equentiel d’une ligne

dans une partition de r´esultats, en commen¸cant a 1 pour la premiere

ligne de chaque partition.

Exemple 1

SELECT employee id,department id, salary, row number() over(order by salary DESC) ”N

FROM employees ;

(cid:176)

Salaire”

49/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions analytiques

Fonction ROW NUMBER()

Exemple 2

SELECT employee id,department id, salary,

row number() over(partition by

department id order by salary DESC) ”Rang

Salaire” FROM employees;

Exemple 3

SELECT employee id,department id,job id,

salary, row number() over(partition by

department id,job id order by salary DESC)

”Rang Salaire” FROM employees;

50/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions analytiques

Fonction RANK()

La fonction rank() retourne le rang dechaque ligne au sein de la

partition d’un ensemble de r´esultats

Exemple

SELECT employee id,department id, salary, rank() over(partition by department id order by salary

DESC) ”Rang Salaire” FROM employees;

51/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions analytiques

Fonction DENSE RANK()

La fonction dense rank() retourne le rang des lignes `a l’int´erieur de

la partition d’un ensemble de r´esultats,sans aucun vide dans le

classement

Exemple

SELECT employee id,department id, salary, dense rank() over(partition by department id order by

salary DESC) ”Rang Salaire” FROM employees;

52/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions analytiques

Fonction FIRST VALUE()

La fonction first value() retourne la premi`ere valeur d’une partition

Exemple

SELECT employee id,department id, salary, first value(salary) over(partition by department id

order by salary ) as first valeur from employees;

53/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions analytiques

Fonction LAST VALUE()

La fonction last value() retourne la derni`ere valeur d’une partition

Exemple

SELECT employee id,department id, salary, last value(salary) over(partition by department id

order by salary ) as last valeur from employees;

54/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

Les fonctions multi-lignes (appel´ees aussi de groupe ou d’agr´egation) op`erent sur

des ensembles de lignes afin de renvoyer un seul r´esultat par groupe.

Les fonctions de groupe les plus utilis´ees:

AVG([distinct | all] expr) : valeur moyenne en ignorant les valeurs NULL

COUNT ([* | distinct | all] expr) : nombre de lignes o`u expr est diff´erente

de NULL. Le caract`ere * comptabilise toutes les lignes s´electionn´ees

MAX ([distinct | all] expr) : valeur maximale en ignorant les valeurs NULL

MIN([ distinct | all] expr) : valeur minimale en ignorant les valeurs NULL

STDDEV([distinct | all] expr) : ecart-type en ignorant les valeurs NULL

SUM([distinct | all] expr) : somme en ignorant les valeurs NULL

VARIANCE([distinct | all] expr) : variance en ignorant les valeurs NULL

55/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Publicité

Les fonctions multi-lignes

Syntaxe

SELECT [colonne,] fonction groupe(colonne), ...

FROM <nom table>

[WHERE <condition>]

[GROUP BY colonne]

[ORDER BY colonne];

Exemple 1

SELECT trunc(AVG(salary),3), SUM(salary), MAX(hire date), MIN(hire date)

FROM employees

WHERE department id in(80,90);

56/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

Exemple 2

SELECT COUNT(*)

FROM employees

WHERE department id in(80,90);

=>retourne le nombre de lignes qui v´erifient la condition de la clause WHERE

Exemple 3

SELECT COUNT(commission pct) ”count”, COUNT(all commission pct) ”all”,

COUNT(DISTINCT commission pct) ”distinct”

FROM employees

WHERE department id in(80,90);

=>COUNT(expr) /COUNT(all expr): retourne le nombre de ligne ayant des valeurs non NULL de expr

=>COUNT(distinct expr): retourne le nombre de ligne ayant des valeurs non NULL et DISTINCT de expr

57/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

Remarque

Les fonctions de groupe ignorent les valeurs NULL de la colonne

Exemple:

SELECT trunc(AVG(commission pct) ,3) FROM employees;

La fonction NVL force les fonctions de groupe `a inclure les valeurs

NULL

Exemple:

SELECT trunc(AVG( NVL(commission pct,0) ) ,3) FROM employees;

58/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

La clause GROUP BY

Exemple 1

SELECT department id, trunc(AVG(salary),3)

FROM employees WHERE department id in(80,90)

GROUP BY department id;

Notez Bien

Toute colonne ou expression de la liste SELECT qui ne constitue pas une fonction d’agr´egation

doit figurer dans la clause GROUP BY

Exemple:

SELECT department id, job id, trunc(AVG(salary),3)

FROM employees WHERE department id in(80,90)

GROUP BY department id, job id

59/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

La clause HAVING

La clause HAVING permet de restreindre l’affichage des r´esultats de

groupes `a ceux qui v´erifient la condition dans cette clause

Les lignes sont regroup´ees

La fonction de groupe est appliqu´ee

Les groupes qui correspondent `a la clause HAVING sont affich´es

Syntaxe

SELECT [colonne,] fonction groupe(colonne), ...

FROM <nom table>

[WHERE <condition>]

[GROUP BY colonne]

[HAVING <condition groupe>]

[ORDER BY colonne];

60/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

La clause HAVING

Exemple 1

SELECT department id, MAX(salary)

FROM employees

WHERE job id LIKE ’%REP’

GROUP BY department id

ORDER BY department id;

Exemple 2

SELECT department id, MAX(salary)

FROM employees

WHERE job id LIKE ’%REP’

GROUP BY department id

HAVING MAX(salary)>=10000

ORDER BY department id;

61/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

L’op´erateur ROLLUP

L’op´erateur ROLLUP : calcule des agr´egats (SUM, COUNT, MAX,

MIN, AVG) `a tous les niveaux de totalisation sur une hi´erarchie de

dimensions et calcule le total g´en´eral selon l’ordre de gauche `a droite

dans la clause GROUP BY

S’il y a n colonnes de regroupements, GROUP BY ROLLUP g´en`ere

n+1 niveaux de totalisation

ROLLUP (a, b, c)

(a, b, c)

(a, b)

(a)

()

62/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

L’op´erateur ROLLUP

Exemple

SELECT Department id, JOB id,manager id, SUM (SALARY)

FROM EMPLOYEES

WHERE DEPARTMENT ID in (10,20,30)

GROUP BY Rollup(Department id, JOB id,manager id);

63/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

L’op´erateur CUBE

L’op´erateur CUBE : calcule des agr´egats (SUM, COUNT, MAX, MIN, AVG) `a

diff´erents niveaux d’agr´egation comme ROLLUP mais de plus permet de calculer

toutes les combinaisons d’agr´egations :

L’op´erateur CUBE: calcule des sous-totaux pour toutes les combinaisons

possibles d’un ensemble de colonnes de regroupement

Si la clause CUBE contient n colonnes, CUBE calcule 2n combinaisons de totaux

CUBE (a, b, c)

(a, b, c)

(a, b)

(a, c)

(a)

(b, c)

(b)

(c)

()

64/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

L’op´erateur CUBE

Exemple

SELECT Department id, JOB id, SUM (SALARY)

FROM EMPLOYEES

WHERE DEPARTMENT ID in (10,20,30)

GROUP BY Cube(Department id, JOB id);

65/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

La fonction GROUPING

Les lignes de totaux correspondent g´enaralement aux lignes ayant

des valeurs NULL

=>possibilit´e de confusion si les lignes contiennent d´eja des valeurs

NULL !

La fonction GROUPING permet d’´eliminer cette ambiguit´e. Elle

accepte une seule colonne comme param`etre et retourne:

1 si la colonne contient une valeur null g´en´er´e dans le cadre d’un

sous-total par un ROLLUP ou CUBE

0 pour une autre valeur, y compris les valeurs NULL stock´ees

66/90

Extraction de donn´ees

Les fonctions

Les sous int´errogations

Les jointures

Les op´erateurs ensemblistes

Les fonctions mono-ligne

Les fonctions analytiques

Les fonctions multi-lignes

Les fonctions multi-lignes

...