Faire une somme d'un count ?

Faire une somme d'un count ? - SQL/NoSQL - Programmation

Marsh Posté le 14-04-2007 à 18:39:03    

Hello,
 
Bon c'est con mais j'ai un soucis avec une requete relou.
J'aimerai faire une somme d'un count avec un group by :
 

Code :
  1. SELECT COUNT(DISTINCT ip) as total_ip FROM table WHERE id='54545' GROUP BY critere


 
Avec ca j'ai un listing groupé par "critere", mais j'aimerai retourner le total de ce "total_ip"
 
 :heink:

Reply

Marsh Posté le 14-04-2007 à 18:39:03   

Reply

Marsh Posté le 14-04-2007 à 21:37:53    

si tu es en oracle tu peux faire un rollup, ca doit etre dispo aussi en ms sql, pour les autres sgbd je ne sais pas, mais c'est pas dans le sql standard je sais plus combien

Reply

Marsh Posté le 15-04-2007 à 03:22:41    

je suis en mysql

Reply

Marsh Posté le 15-04-2007 à 19:17:24    

t'as essayé avec une requete imbriquée ?
 
(je ne sais pas si ce code est bon mais ça peut t'aider)
 

Code :
  1. SELECT SUM(total_ip) AS somme FROM (SELECT COUNT(DISTINCT ip) as total_ip FROM table WHERE id='54545' GROUP BY critere)


 
par contre les requetes imbriquées, ce n'est possible qu'a partir d'une certaine version de mysql je ne sais plus laquelle :)

Reply

Marsh Posté le 16-04-2007 à 08:20:41    

nycius a écrit :

je suis en mysql


 
La remarque de casimimir était bonne, jette un oeil sur la commande ROLLUP, ça marche aussi pour MySQL :  
http://dev.mysql.com/doc/refman/5. [...] fiers.html

Reply

Marsh Posté le 16-04-2007 à 09:57:10    

pot2yaourt a écrit :

La remarque de casimimir était bonne, jette un oeil sur la commande ROLLUP, ça marche aussi pour MySQL :  
http://dev.mysql.com/doc/refman/5. [...] fiers.html


 
Je suis en mysql 4.1

Reply

Marsh Posté le 16-04-2007 à 10:37:51    

attention, je vais poser une question extremement conne, peut etre que je suis pas super bien reveille et que c'est une connerie plus grosse que moi, mais:
 

Code :
  1. SELECT COUNT(DISTINCT ip) AS total_ip FROM TABLE WHERE id='54545'


 
ca fait pas ce que tu veux ? [:pingouino] (ie, sans le group by)

Reply

Marsh Posté le 16-04-2007 à 10:44:15    

Pas mal cette commande rollup : je ne connaissais pas :)

Reply

Marsh Posté le 16-04-2007 à 13:06:59    

nycius a écrit :

Je suis en mysql 4.1


 
C'est con, la commande ROLLUP fonctionne à partir de MySQL 4.1.1.  :p  
 
Ca serait le moment de migrer vers MySQL 5.x.

Message cité 1 fois
Message édité par pot2yaourt le 16-04-2007 à 13:08:15
Reply

Marsh Posté le 16-04-2007 à 15:45:19    

pot2yaourt a écrit :

C'est con, la commande ROLLUP fonctionne à partir de MySQL 4.1.1.  :p  
 
Ca serait le moment de migrer vers MySQL 5.x.


 
Je suis en 4.1.20 ;)

Reply

Marsh Posté le 16-04-2007 à 15:45:19   

Reply

Marsh Posté le 16-04-2007 à 15:48:24    

souk a écrit :

attention, je vais poser une question extremement conne, peut etre que je suis pas super bien reveille et que c'est une connerie plus grosse que moi, mais:
 

Code :
  1. SELECT COUNT(DISTINCT ip) AS total_ip FROM TABLE WHERE id='54545'


 
ca fait pas ce que tu veux ? [:pingouino] (ie, sans le group by)


vu la question, moi je vote et je dis +1000000000000000000000
 
d'autant que le rollup ne sert à rien, franchement c'est deux lignes en PHP lors de l'affichage du détail, ça ne représente donc aucun intérêt.

Message cité 1 fois
Message édité par MagicBuzz le 16-04-2007 à 15:48:40
Reply

Marsh Posté le 16-04-2007 à 15:49:41    

MagicBuzz a écrit :

vu la question, moi je vote et je dis +1000000000000000000000
 
d'autant que le rollup ne sert à rien, franchement c'est deux lignes en PHP lors de l'affichage du détail, ça ne représente donc aucun intérêt.


 
Je dois grouper le nombre de resultat, cette requete sort une boucle donc ca doit grouper par quelque chose mais faire le total
 
J'ai deja essayé ce que vous me dites de faire

Reply

Marsh Posté le 16-04-2007 à 15:57:36    

En pseudo code, je sais pas écrire du PHP c'est d'la merde :
 

Code :
  1. $rows = mysqlmachintrucquiexecutelarequete("SELECT COUNT(DISTINCT ip) as total_ip, critere FROM table WHERE id='54545' GROUP BY critere" );
  2. $total = 0;
  3. while(fetch($rows))
  4. {
  5.   print("critere : ".$rows["critere"]." = ".$rows["total_ip"]."<br/>" );
  6.   $total += $rows["total_ip"];
  7. }
  8. print("<hr/>total : ".$total);


 
spourtantpascompliqué :spamafote:

Reply

Marsh Posté le 16-04-2007 à 17:25:44    

En faisant un ROLLUP ou autre jobtient ca :
 

Code :
  1. totip
  2. --
  3. 5
  4. 61
  5. 59
  6. 54
  7. 49
  8. 38
  9. 43
  10. 26
  11. 20
  12. 20
  13. ROLLUP = 367


 
Ya pas comme un soucis ?  :heink:

Reply

Marsh Posté le 16-04-2007 à 17:50:24    

à première vue le total est bon :??: qu'est-ce qui ne te va pas ?

Reply

Marsh Posté le 16-04-2007 à 17:56:51    

fais le total de tout et compare au ROLLUP

Reply

Marsh Posté le 16-04-2007 à 19:07:30    

bah y'en a 8 qui steak haché :spamafote:
 
c'est ça de travailler avec des fonctions pas standard d'un outil de merde, gnou en plus :o

Reply

Marsh Posté le 16-04-2007 à 19:09:21    

MagicBuzz a écrit :

bah y'en a 8 qui steak haché :spamafote:
 
c'est ça de travailler avec des fonctions pas standard d'un outil de merde, gnou en plus :o


 
Méga constructif , merci beaucoup de cette intervention

Reply

Marsh Posté le 16-04-2007 à 19:27:13    

t'as qu'à faire comme tout le monde, utiliser des fonctions standard.
je t'ai collé un exemple complet, t'as qu'à modifier deux noms de fonctions pour que ça marche. alors arrête de tourner autour du pot et dire que je suis pas constructif. c'est toi à vouloir t'entêter à utiliser un truc qui n'est pas au point sur ta version, et de toute façon pas standard du tout.

Reply

Marsh Posté le 16-04-2007 à 19:36:10    

MagicBuzz a écrit :

t'as qu'à faire comme tout le monde, utiliser des fonctions standard.
je t'ai collé un exemple complet, t'as qu'à modifier deux noms de fonctions pour que ça marche. alors arrête de tourner autour du pot et dire que je suis pas constructif. c'est toi à vouloir t'entêter à utiliser un truc qui n'est pas au point sur ta version, et de toute façon pas standard du tout.


 
Quest ce que tu me racontes avec ton code tout degeu ? jutilise pas ton code pour une raison simple et précise c'est quil sera pas adapté sur de grosses charges, sinon je laurai fait depuis perpette
 
Alors tes gentil mais tu peux passer ton chemin avec tes "non standard" and co


Message édité par nycius le 16-04-2007 à 19:40:16
Reply

Marsh Posté le 16-04-2007 à 19:55:50    

lol, il monte pas la charge... on aura tout vu...
 
ben reste avec ta fonction rollup buggée qu'est-ce que tu veux.

Reply

Marsh Posté le 19-04-2007 à 21:56:06    

et avec la requete imbriquée que te donne plus haut, ça marche pas ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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