Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
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 14/12/2010, 17h38   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 63
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 63
Points : 14
Points : 14
Par défaut compter les doublons

Bonjour,

Je voudrais avoir le nombre de doublons pour chaque personne de ma table.

ex :
id nom
00001 TOTO
00001 TOTO
00002 TITI
00003 TOTO
00003 TOTO
00004 TUTU
00004 TUTU
...
Je voudrais avoir comme résultat : la personne + Nb de doublons
TOTO 2
TUTU 1

J'ai fait la requete suivante mais cela ne fonctionne pas !!

Code :
1
2
3
4
5
6
7
SELECT count(nom),nom
FROM matable
GROUP BY nom
WHERE id IN (SELECT id
FROM matable
GROUP BY id
HAVING COUNT(*)>1)
Merci de m'aider et de me dire ce qui ne va pas !

Cordialement.
astrolane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 18h05   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 964
Points : 3 964
Code :
1
2
3
SELECT nom, count(*)
FROM matable
GROUP BY nom
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 19h25   #3
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 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Je pense plutôt à ce besoin :
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
;WITH MaTable (id, nom) AS
(
SELECT '00001', 'TOTO' union ALL
SELECT '00001', 'TOTO' union ALL
SELECT '00002', 'TITI' union ALL
SELECT '00003', 'TOTO' union ALL
SELECT '00003', 'TOTO' union ALL
SELECT '00004', 'TUTU' union ALL
SELECT '00004', 'TUTU'
)
  ,  sr (id, nom) AS
(
  SELECT id, nom
    FROM MaTable
GROUP BY id, nom
  HAVING count(*) > 1
)
  SELECT nom, count(*) AS nb_doublons
    FROM sr
GROUP BY nom;
 
nom  nb_doublons
---- -----------
TOTO 2
TUTU 1
Avec une fonction de fenêtrage :
Code :
1
2
3
4
5
6
7
8
9
10
  SELECT DISTINCT nom,
         count(*) over(partition BY nom) AS nb_doublons
    FROM MaTable
GROUP BY id, nom
  HAVING count(*) > 1;
 
nom  nb_doublons
---- -----------
TOTO 2
TUTU 1
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 14/12/2010, 19h30   #4
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 964
Points : 3 964
Citation:
Envoyé par Waldar Voir le message
Je pense plutôt à ce besoin
Vu la précision de la demande, on peut à peu près tout proposer sans être certain...
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/12/2010, 10h14   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 63
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 63
Points : 14
Points : 14
bonjour,

Merci waldar, c'est bien la réponse que j'attendais.
Je ne connaissait pas du tout le over partition by . Je vais m'y attarder grâce à toi.
Encore merci pour votre aide !!
astrolane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h55.


 
 
 
 
Partenaires

Hébergement Web