Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/06/2011, 16h38   #1
Membre du Club
 
Inscription : avril 2003
Messages : 219
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 219
Points : 50
Points : 50
Par défaut Supprimer des doublons dans un select

Bonjour,

J'ai une requête qui me retourne ces enregistrements:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
dgd_date	jour	ddy_descr	dgp_descr	dgd_work_minutes	workload
2011-06-01 00:00:00.000	4	Blank	Blank	0	0
2011-06-01 00:00:00.000	4	FR- DEFAULT	FR100	600	100
2011-06-02 00:00:00.000	5	Blank	Blank	0	0
2011-06-03 00:00:00.000	6	Blank	Blank	0	0
2011-06-03 00:00:00.000	6	FR- DEFAULT	FR100	600	100
2011-06-04 00:00:00.000	7	Blank	Blank	0	0
2011-06-05 00:00:00.000	1	Blank	Blank	0	0
2011-06-06 00:00:00.000	2	FR- DEFAULT	FR100	600	100
2011-06-06 00:00:00.000	2	Blank	Blank	0	0
2011-06-07 00:00:00.000	3	Blank	Blank	0	0
2011-06-07 00:00:00.000	3	FR- DEFAULT	FR100	600	100
2011-06-08 00:00:00.000	4	FR- DEFAULT	FR100	600	100
2011-06-08 00:00:00.000	4	Blank	Blank	0	0
2011-06-09 00:00:00.000	5	Blank	Blank	0	0
2011-06-09 00:00:00.000	5	FR- DEFAULT	FR100	600	100
2011-06-10 00:00:00.000	6	FR- DEFAULT	FR100	600	100
2011-06-10 00:00:00.000	6	Blank	Blank	0	0
2011-06-11 00:00:00.000	7	Blank	Blank	0	0
2011-06-12 00:00:00.000	1	Blank	Blank	0	0
2011-06-13 00:00:00.000	2	Blank	Blank	0	0
2011-06-14 00:00:00.000	3	FR- DEFAULT	FR100	600	100
2011-06-14 00:00:00.000	3	Blank	Blank	0	0
2011-06-15 00:00:00.000	4	Blank	Blank	0	0
2011-06-16 00:00:00.000	5	Blank	Blank	0	0
2011-06-17 00:00:00.000	6	Blank	Blank	0	0
2011-06-18 00:00:00.000	7	Blank	Blank	0	0
2011-06-19 00:00:00.000	1	Blank	Blank	0	0
2011-06-20 00:00:00.000	2	Blank	Blank	0	0
2011-06-21 00:00:00.000	3	Blank	Blank	0	0
2011-06-22 00:00:00.000	4	Blank	Blank	0	0
2011-06-23 00:00:00.000	5	Blank	Blank	0	0
2011-06-24 00:00:00.000	6	Blank	Blank	0	0
2011-06-25 00:00:00.000	7	Blank	Blank	0	0
2011-06-26 00:00:00.000	1	Blank	Blank	0	0
2011-06-27 00:00:00.000	2	Blank	Blank	0	0
2011-06-28 00:00:00.000	3	Blank	Blank	0	0
2011-06-29 00:00:00.000	4	Blank	Blank	0	0
2011-06-30 00:00:00.000	5	Blank	Blank	0	0
Vous l'aurez au format excel via ce lien : http://www.filefactory.com/file/ccd7ef7/n/records.xls

Les lignes ayant une date entre le 01/06 et le 14/06 sont en double.
Je voudrais supprimer les doublons en gardant la ligne ayant un workload > 0.

Y a-t-il un moyen efficace pour cela et qui ne coûte pas cher, car c'est une requête primordiale et très utilisée, donc le moindre traitement supplémentaire peut poser des problèmes de performance.

Je n'ai pas trouvé de solutions dans la doc de SQLPRO sur les doublons.

Merci beaucoup pour votre aide.
bart64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 16h43   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 007
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 007
Points : 18 275
Points : 18 275
Envoyer un message via MSN à CinePhil
Pourquoi pas tout simplement ceci ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 16h46   #3
Membre du Club
 
Inscription : avril 2003
Messages : 219
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 219
Points : 50
Points : 50
Merci pour votre réponse.

Je ne peux pas faire ceci car lorsque je n'ai pas de doublon, il faut que je garde la ligne avec un workload à 0.
Ce serait trop simple
bart64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 16h47   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 433
Points : 10 433
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Quel est votre SGBD ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 16h54   #5
Membre du Club
 
Inscription : avril 2003
Messages : 219
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 219
Points : 50
Points : 50
Je suis en SQL Server 2008 SP1.

Merci
bart64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 17h27   #6
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 433
Points : 10 433
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
L'idée est de faire une numérotation par jour classée par workload descendant.
On peut le faire facilement avec ROW_NUMBER :
Code :
1
2
3
4
5
6
7
8
9
WITH SR AS
(
SELECT dgd_date, jour, ddy_descr, dgp_descr, dgd_work_minutes, workload,
       row_number() over(partition BY dgd_date ORDER BY workload DESC) AS rn
  FROM <votre_requete>
)
SELECT dgd_date, jour, ddy_descr, dgp_descr, dgd_work_minutes, workload
  FROM SR
 WHERE rn = 1
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 23h18   #7
Membre du Club
 
Inscription : avril 2003
Messages : 219
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 219
Points : 50
Points : 50
Bonsoir Waldar,

Merci beaucoup pour votre réponse, j'aurai la possibilité de tester à partir de dimanche.
J'ai reparcouru mes anciens messages sur developpez, en particulier le dernier, et je n'avais pas lu la dernière réponse de votre part qui m'aurait certainement aidé aujourd'hui.
http://www.developpez.net/forums/d80...te-requete-sql

Un grand merci, je reviens vers vous ASAP.
bart64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h15.


 
 
 
 
Partenaires

Hébergement Web