SQL et pourcentage en 1 et 1 seule ligne
Bonjour, bonjour,
Une simple question qui me retourne le cerveau depuis cet après midi et qui va surement me pourrir la nuit :aie:
La question est la suivante : comment en 1 requête calculer le nombre d'occurence d'une valeur et donner le pourcentage d'occupation en 1 ligne?
Pour l'exemple j'ai des services dans ma table TEST, normale :
SERVICE ... ...
Compta
Finance
Compta
Treso
Je veux obtenir le résultat suivant en 1 requête !!!!
SERVICE ____Nb____%
Compta ______2 ___0.5
Finance ______1____0.25
Treso _______1 ____0.25
J'ai fais un GROUP BY tel que
Code:
1 2
| SELECT SERVICE, count(SERVICE) as "NB", count(SERVICE)/(select count(*) from TEST) as "%"
FROM TEST GROUP BY SERVICE |
et j'obtiens
SERVICE ______ NB _ %
Compta_________2__ 0
Finance ________1__ 0
Treso _________ 1__ 0
Si vous avez une idée , suis preneur :D
Je continue et si je trouve le grâle je vous fais un retour, peut être une fonction récursive ?
Je repasse demain car je ne bosse pas la nuit, et puis désolé pour ceux à qui je vais la pourrir ! :ptdr:
J'ai perdu mes décimales!!!
C'est bon le schimiliblick avance! :D
Merci pour al1_24 pour sa remarque de calcul, se qui a nettement amélioré les résultats par contre y a un truc avec la fonction DEC que bernard59139 pourra peut être éclairer.
Ma requête est la suivante
Code:
1 2 3 4 5 6
|
SELECT
ZLDSCN as service,count(zldscn) as Nb , decimal(100*count(zldscn)/(select count(*) from ZDESCD00), 5, 2) as "%" ,
(select count(*) from zdescd00) as "Nb de ligne totale"
FROM ZDESCD00
GROUP BY ZLDSCN |
et le résultat ci-dessous tan,tan !
Code:
1 2 3 4 5
| SERVICE NB "%" "Nb de ligne totale"
X_TB_ITEM 4 ,000 421
APPROS004 15 3,000 421
MOVE_WHSL 5 1,000 421
HIECLIENT 49 11,000 421 |
La question est pourquoi je n'ai pas les décimales ? par exemple pour HIECLIENT 49/421 x 100 = 11.63 et la j'ai 11,00
WTF!
C'est sans doute une syntaxe mal appropriée ou une perte de neurone totale sans virgule !