SQL : question tt con , mais galere : pourcentage

SQL : question tt con , mais galere : pourcentage - Programmation

Marsh Posté le 29-03-2002 à 09:18:40    

Y a 2 champs : compagnie et homepage
 
Chaque compagnie peut avoir une homepage. mais peut ne pas en avoir aussi (champs vide dans ce cas)
 
calculer le pourcentage des compagnies qui on une homepage
 
ca parait facile, mais no :/
 
HELP :cry:

Reply

Marsh Posté le 29-03-2002 à 09:18:40   

Reply

Marsh Posté le 29-03-2002 à 09:22:18    

En quoi c'est ? SQL ? C, Java ?
 
Sinon c'est tout con : tu comptes les compagnies, tu comptes les homepages et ensuite, homepages * 100 / compagnies
 
Où est la difficulté ?

Reply

Marsh Posté le 29-03-2002 à 09:24:22    

Cherrytree a écrit a écrit :

En quoi c'est ? SQL ? C, Java ?
 
Sinon c'est tout con : tu comptes les compagnies, tu comptes les homepages et ensuite, homepages * 100 / compagnies
 
Où est la difficulté ?  




 
C en SQL
 
Oui, je c ce ki fo fer, mais c le fait de l'imbriquer ds une seul requete ke j'arrive po :(

Reply

Marsh Posté le 29-03-2002 à 09:31:31    

Ah ouais, j'avais pas vu le SQL dans la question, sorry.
 
C'est clair que maintenant que tu le dis, je me pose moi aussi le problème de la syntaxe. Je cherche.

Reply

Marsh Posté le 29-03-2002 à 09:34:01    

Facile  (mais pour MySQL)  
 
select (count(homepage) * 100 / count(compagnie)) from Table as value where [conditions..]
 
et ouala!

Reply

Marsh Posté le 29-03-2002 à 09:35:20    

SELECT COUNT(homepages) * 100 / COUNT(companies) FROM TaTable WHERE homepages <> "";
 
AMHA c'est un truc comme ça.

Reply

Marsh Posté le 29-03-2002 à 09:35:53    

Arrgh, gfive m'a grillé.

Reply

Marsh Posté le 29-03-2002 à 09:39:06    

si simple :heink:  
 
j'essaie :bounce:

Reply

Marsh Posté le 29-03-2002 à 09:42:52    

Ben ouais.

Reply

Marsh Posté le 29-03-2002 à 09:45:37    

Nan, ca va pâs votre truc, paske, ca ne compte pas le nb total de company

Reply

Marsh Posté le 29-03-2002 à 09:45:37   

Reply

Marsh Posté le 29-03-2002 à 09:48:12    

utilise des sous-requêtes

Reply

Marsh Posté le 29-03-2002 à 09:48:32    

exactement ;)
 
c ce ke je fais

Reply

Marsh Posté le 29-03-2002 à 09:52:01    

select (cast(count(supplierid)as numeric(5,3))/(select cast(count(supplierid)as numeric(5,3)) from suppliers))*100 from suppliers where homepage is not null

Reply

Marsh Posté le 29-03-2002 à 09:55:48    

fabd a écrit a écrit :

Nan, ca va pâs votre truc, paske, ca ne compte pas le nb total de company  




 
:o Comment ça, ca compte pas le nombre total de compagnies?? C zarb, pasque je viens de fair eun test sur deux valeurs dans une table à moi, et ça fonctionne?? :??:

Reply

Marsh Posté le 29-03-2002 à 10:02:51    

gfive a écrit a écrit :

 
 
:o Comment ça, ca compte pas le nombre total de compagnies?? C zarb, pasque je viens de fair eun test sur deux valeurs dans une table à moi, et ça fonctionne?? :??:  




 
BAH no, tu met une clause where sur TOUTE la requete

Reply

Marsh Posté le 29-03-2002 à 10:05:08    

ah, okaye, je vois, effectivement, j'avais pas pensé à ça! :D

Reply

Marsh Posté le 29-03-2002 à 10:11:15    

Arrgh, en plus d'être lent, je fais la même erreur que gfive.

Reply

Marsh Posté le 29-03-2002 à 10:19:15    

vous voyez ke c t pas si simple ;)

Reply

Marsh Posté le 29-03-2002 à 11:03:38    

select ( sum( case homepage when NULL then 0 else 1 end )*100 / ( count( compagnie ) ) ) as x from table
 
J'ai testé, et çà marche avec MySql !

 

[jfdsdjhfuetppo]--Message édité par Mara's dad--[/jfdsdjhfuetppo]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 29-03-2002 à 13:51:01    

Select count(E1.homepages) / count (E.compagnie)
from tatable as E, tatable as E1
where E1.homepages IS NOT NULL
 
un truc comme ca

 

[jfdsdjhfuetppo]--Message édité par Rob Roy--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 29-03-2002 à 13:59:12    

Rob Roy : Dans une requête comme çà, tu as une explosion combinatoire. Le nombre d'enregistrement compté correspond à Nb d'enreg de E * Nb d'enreg de E1.
 
Donc ce n'est pas la solution !
 
Sans parler du fait que tu ne calcule pas un poucentage !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 29-03-2002 à 14:03:55    

Donc, si tu fais le test, tu te rendra compte que :
count(E1.homepages) est égale = count (E.compagnie)
et que donc
count(E1.homepages) / count (E.compagnie) vaut 1.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 29-03-2002 à 14:09:07    

en effet, je suis allé un peu vite

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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