[sql] requete count distinct

requete count distinct [sql] - SQL/NoSQL - Programmation

Marsh Posté le 06-06-2005 à 16:10:32    

Bonjour  
 
j'ai une question qui me parait con mais je n'arrive pas a trouver la solution
 
comment compter le nombre distinct d'un couple ?
 
J'aimerai faire queqlques chose comme cela :
 

select count(distinct id_per,id_conf) from matable


 
---------
|matable|
---------
|id_per |
|id_conf|
---------
 
voici les données inclues dedans :
 
id_per| id_conf
1 | 1
1 | 1
1 | 2
 
 
j'aimerai compter le nombre de couple different
ici avoir 2 et non 3
 
 


---------------
http://www.starbusiness.fr : jeux en ligne bientôt Massivement Multi Joueur. Gestion et Wargame dans un univers à la conquête de l'espace ...
Reply

Marsh Posté le 06-06-2005 à 16:10:32   

Reply

Marsh Posté le 06-06-2005 à 16:24:14    

solution dégueux :
 

Code :
  1. select count(distinct cast(id_per as charvhar) + '_' + cast(id_conf as varchar)) from matable


 
Là comme ça, à froid (enfin... à chaud parceque je crève là)j'ai pas d'autre idée :)


Message édité par Arjuna le 06-06-2005 à 16:24:43
Reply

Marsh Posté le 06-06-2005 à 16:26:00    

Sinon, j'y pense... Un simple :
 

Code :
  1. select count(id_per)
  2. from matable
  3. group by id_conf


 
Ca devrait faire l'affaire non ?

Reply

Marsh Posté le 06-06-2005 à 16:27:13    

:heink:
 
ouais nan, fait vraiment trop chaud, j'ai mes neurrones qui cuisent là...
 
y'a que la première requête qui marche :)
 
à moins que...
 

Code :
  1. select count(distinct id_per)
  2. from matable
  3. group by id_conf


 
 
:sweat:
 
nan, fait vraiment trop chaud, faut que je dorme :D
 
y'a que la première qui marche :D


Message édité par Arjuna le 06-06-2005 à 16:28:06
Reply

Marsh Posté le 06-06-2005 à 16:31:16    

Je confirme, bois un truc frais!:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-06-2005 à 16:34:05    

...et un bête
select count(*) from (select distinct id_per, id_conf from matable) ??


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-06-2005 à 16:36:06    

ha ouais, ça à l'air pas mal aussi :D

Reply

Marsh Posté le 06-06-2005 à 16:36:12    

oui il me semble bien qu'il n'y a que la premiere qui marche
j'ai aussi pensé a faire une vue :

CREATE VIEW mavue AS SELECT DISYINCT id_per,id_conf FROM matable
 
SELECT COUNT(*) FROM mavue


mais je pense que ce n'est pas l'idéal
 
j'ai aussi testé une version similaire a ce que tu ma montré :
 

SELECT COUNT(DISTINCT id_per+id_conf*1000000) FROM matable


 
merci pour ton aide et je te souhaite une bonne nuité de repos
 :sleep:


---------------
http://www.starbusiness.fr : jeux en ligne bientôt Massivement Multi Joueur. Gestion et Wargame dans un univers à la conquête de l'espace ...
Reply

Marsh Posté le 06-06-2005 à 16:36:34    

mais si c'est sous MySQL < 4.1, bah ma première solution marche et pas la tienne, nananèreuh :D
 
-- edit : ce message était destiné à skeye qui a donné une solution meilleure que ma première ;)


Message édité par Arjuna le 06-06-2005 à 16:37:30
Reply

Marsh Posté le 06-06-2005 à 16:38:01    

Arjuna a écrit :

mais si c'est sous MySQL < 4.1, bah ma première solution marche et pas la tienne, nananèreuh :D


C'était pas dans la question de départ.:o
Et si on veut la planter ta solution on doit pouvoir, en collant des underscores dans les 2 champs...[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-06-2005 à 16:38:01   

Reply

Marsh Posté le 06-06-2005 à 16:42:44    

Citation :

...et un bête  
select count(*) from (select distinct id_per, id_conf from matable) ??


 
cette solution ne marche pas chez moi
 
je suis sous SQL server 2000


---------------
http://www.starbusiness.fr : jeux en ligne bientôt Massivement Multi Joueur. Gestion et Wargame dans un univers à la conquête de l'espace ...
Reply

Marsh Posté le 06-06-2005 à 16:50:21    

Ouais :
 
select count(*) from (select distinct id, val from tsttbl) as prout
 
Faut toujours aliaser les sous-requêtes avec SQL Server ;)

Reply

Marsh Posté le 06-06-2005 à 17:04:43    

merci


---------------
http://www.starbusiness.fr : jeux en ligne bientôt Massivement Multi Joueur. Gestion et Wargame dans un univers à la conquête de l'espace ...
Reply

Marsh Posté le 06-06-2005 à 18:34:22    

Arjuna a écrit :

Ouais :
 
select count(*) from (select distinct id, val from tsttbl) as prout
 
Faut toujours aliaser les sous-requêtes avec SQL Server ;)


c'est bon à savoir...je bosse que sous oracle! [:joce]


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed