webForumDet fria alternativet

Räkna ut procent

3 svar · 3 712 visningar · startad av limpon

limponMedlem sedan sep. 2001175 inlägg
#1

Sitter och försöker få till lite statistik på jobbet.

Där man skall räkna ut enligt denna formel (försäljningar/(försäljning+ejförsäljning))

Vad som händer då jag försöker räkna ut det i SQL satsen förstår jag inte.
På en person så blir det formeln (10/(10+25)) som blir 28.5%

Men i SQL satsen så ger den mig svaret 104%, Jag hoppas någon kan förklara varför det bli så och ge mig en vägledning till hur man skall gå till väga.

SELECT Sum(UC.sSales/(UC.sResting+UC.sSales)) as sHitRate, U.userFName, U.userLName FROM tUsers U
INNER JOIN sUserCampaign UC ON UC.userID=U.userID WHERE 
UC.campaignID=29 
GROUP BY UC.userID,U.userFName, U.userLName 
ORDER BY Sum(UC.sSales/(UC.sResting+UC.sSales)) DESC limit 10

Databasen är mysql

Frågan där ger mig resultatet.
sHitRate userFName userLName
1.04444444444444 Kalle-Anka Nilsson

Den skall ge mig en sHitrate på ca 28% i just det här fallet.

SPiNMedlem sedan mars 20007 896 inlägg
#2

Du ska inte använda SUM(), som summerar ihop alla rader.

SELECT ((UC.sSales/(UC.sSales+UC.sResting))*100) as sHitRate, U.userFName, U.userLName
FROM tUsers U
     INNER JOIN sUserCampaign UC ON UC.userID=U.userID
WHERE UC.campaignID=29
GROUP BY UC.userID, U.userFName, U.userLName
ORDER BY sHitRate DESC
LIMIT 10

Genom att multiplicera med 100 får du ut procentsatsen.

Peter SMedlem sedan dec. 20025 483 inlägg
#3

I.o.m. att du gör SUM() på hela klabbet så summerar du alla procentsatser. I stället:

Sum(UC.sSales)/Sum(UC.sResting+UC.sSales)
limponMedlem sedan sep. 2001175 inlägg
#4

Tack !

Fick jag lära mig något nytt :)

Tusen tack, det löste problemet :)

124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)