J'essaie quelque chose comme ça:

select sum(R_Value) ,((5/cast(sum(R_Value) as int)) * 100.000000000) 
from R_Rating 
where R_B_Id = 135

Mais je continue à obtenir la valeur 0, sum (R_Value) = 6, donc je veux juste un pourcentage sur (5 / sum (R_Value)) * 100.

Comment puis-je l'obtenir?

J'ai une note de 5, donc chaque utilisateur a une note qu'il peut choisir de 1 à 5, donc ce dont j'ai besoin est une formule qui prend en compte la somme et prend en compte le nombre d'utilisateurs qui ont noté et nous donne un résultat de 1 à 5 à la fin

Quelque chose comme cela peut fonctionner, mais je dois arrondir à une décimale pour obtenir un nombre entier.

select sum(R_Value), ((count(*)/cast(sum(R_Value) as float)) * 10) 
from R_Rating 
where R_B_Id = 135
0
redoc01 19 avril 2020 à 17:36

2 réponses

Meilleure réponse

Pour obtenir la note moyenne, vous devez forcer l'algèbre à virgule flottante. Par exemple:

select 1.0 * sum(R_Value) / count(*)
from R_Rating 
where R_B_Id = 135

Ensuite, si votre requête sélectionne trois lignes avec les valeurs: 1, 4 et 5, cette requête renverra 3.33 étoiles comme moyenne. C'est-à-dire:

= 1.0 * (1 + 4 + 5) / 3
= 1.0 * 10 / 3
= 10.0 / 3
= 3.33333333
1
The Impaler 19 avril 2020 à 14:55

Je recommande d'écrire ceci comme:

select sum(R_Value) ,
      (500.0 / sum(R_Value))
from R_Rating 
where R_B_Id = 135;

Cela évite une division entière.

1
Gordon Linoff 19 avril 2020 à 14:54