Pour le premier tout est ici : - http://sql.developpez.com/sqlaz/select/#L1.2
Pour le second : - http://sql.developpez.com/sqlaz/ensembles/#L1
-- Cordialement.
Romelard Fabrice [MVP]
"Christophe" a écrit dans le message de news:
Bonjour,
quelle est la subtilité exacte entre les deux commandes
Distinct & group by
Merci !
Sylvain Lafontaine
Distinct peut être vu comme un cas particulier de Group By devant s'appliquer à tous les champs et où il n'y a aucune utilisation de fonctions de regroupement comme Count(), Max(), etc.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC E-mail: http://cerbermail.com/?QugbLEWINF
"Christophe" wrote in message news:
Bonjour,
quelle est la subtilité exacte entre les deux commandes
Distinct & group by
Merci !
Distinct peut être vu comme un cas particulier de Group By devant
s'appliquer à tous les champs et où il n'y a aucune utilisation de fonctions
de regroupement comme Count(), Max(), etc.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF
"Christophe" <christophe@digital16-9.com> wrote in message
news:u1p5kO6bGHA.1960@TK2MSFTNGP05.phx.gbl...
Bonjour,
quelle est la subtilité exacte entre les deux commandes
Distinct peut être vu comme un cas particulier de Group By devant s'appliquer à tous les champs et où il n'y a aucune utilisation de fonctions de regroupement comme Count(), Max(), etc.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC E-mail: http://cerbermail.com/?QugbLEWINF
"Christophe" wrote in message news:
Bonjour,
quelle est la subtilité exacte entre les deux commandes
Distinct & group by
Merci !
SQLpro [MVP]
Sylvain Lafontaine a écrit :
Distinct peut être vu comme un cas particulier de Group By devant s'appliquer à tous les champs et où il n'y a aucune utilisation de fonctions de regroupement comme Count(), Max(), etc.
pas tout à fait car le DISTINCT s'applique aussi aux calculs d'agrégats et aux opérations ensemblistes :
pour les agrégats : AVG(DISTINCT <expression>), SUM(DISTINCT <expression>), COUNT(DISTINCT <expression>), MAX(DISTINCT <expression>), MIN(DISTINCT <expression>),
Pour les opérations ensemblistes
SELECT ... UNION DISTINCT SELECT ...
SELECT ... EXCEPT DISTINCT SELECT ...
SELECT ... INTERSECT DISTINCT SELECT ...
Dans le cadre du dédoublonnage de lignes DISTINCT doit être placé après le SELECT. GROUP BY porte un distinct implicite mais ne s'avère utile que pour les sous ensembles (groupage) induits pas les calcul d'agrégats.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Sylvain Lafontaine a écrit :
Distinct peut être vu comme un cas particulier de Group By devant
s'appliquer à tous les champs et où il n'y a aucune utilisation de fonctions
de regroupement comme Count(), Max(), etc.
pas tout à fait car le DISTINCT s'applique aussi aux calculs d'agrégats
et aux opérations ensemblistes :
pour les agrégats :
AVG(DISTINCT <expression>), SUM(DISTINCT <expression>),
COUNT(DISTINCT <expression>), MAX(DISTINCT <expression>),
MIN(DISTINCT <expression>),
Pour les opérations ensemblistes
SELECT ...
UNION DISTINCT
SELECT ...
SELECT ...
EXCEPT DISTINCT
SELECT ...
SELECT ...
INTERSECT DISTINCT
SELECT ...
Dans le cadre du dédoublonnage de lignes DISTINCT doit être placé après
le SELECT. GROUP BY porte un distinct implicite mais ne s'avère utile
que pour les sous ensembles (groupage) induits pas les calcul d'agrégats.
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Distinct peut être vu comme un cas particulier de Group By devant s'appliquer à tous les champs et où il n'y a aucune utilisation de fonctions de regroupement comme Count(), Max(), etc.
pas tout à fait car le DISTINCT s'applique aussi aux calculs d'agrégats et aux opérations ensemblistes :
pour les agrégats : AVG(DISTINCT <expression>), SUM(DISTINCT <expression>), COUNT(DISTINCT <expression>), MAX(DISTINCT <expression>), MIN(DISTINCT <expression>),
Pour les opérations ensemblistes
SELECT ... UNION DISTINCT SELECT ...
SELECT ... EXCEPT DISTINCT SELECT ...
SELECT ... INTERSECT DISTINCT SELECT ...
Dans le cadre du dédoublonnage de lignes DISTINCT doit être placé après le SELECT. GROUP BY porte un distinct implicite mais ne s'avère utile que pour les sous ensembles (groupage) induits pas les calcul d'agrégats.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************