webForumDet fria alternativet

räkna ut %

9 svar · 292 visningar · startad av turbofreddan

turbofreddanMedlem sedan apr. 2003115 inlägg
#1

Jag är ju inte riktikgt hemma på det här med sql, men tänkte att detta borde göras med sql. Jag ska räkna ut hur många procent som varje Answercount är inom samma id, så alla som har ID = 2 är 100% tillsammans.

"UPDATE [PollAnswers] SET [AnswerPercent] = [AnswerCount] * ((SUM ([AnswerCount] WHERE ID=2))/(COUNT([AnswerCount] WHERE ID = 2)))"

Funkar inte riktigt, någon som har bättre förslag?

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Förutsätter att du har någon kolumn som identifierar vilken fråga det gäller. Jag kallar den answerid.

UPDATE PollAnswers as pa
  SET AnswerPercent = 
  (select cast(sum(case when answerid = pa.answerid then 1 else 0 end) as decimal(10,2))/
         count(*) from pollanswers where id = 2)
 WHERE ID = 2
turbofreddanMedlem sedan apr. 2003115 inlägg
#3

Ja inte lätt att förså vad jag menade kanske

int Q = question id

"UPDATE [PollAnswers] SET [AnswerPercent] = [AnswerCount] * ((SUM ([AnswerCount] WHERE QID=Q))/(COUNT([AnswerCount] WHERE QID = Q)))"

Alltså jag vill Uppdatera alla svar som finns för en fråga.

Kan ju finnas fem svar till fråga x och då vill jag i en SQL sats beräkna procenten för de fem.

Alltså
QID AnswerCOunt AnswerPercent
2 7 X
2 0 X
2 1 X
3 2 x
3 17 x
alltså jasg vill med en sql query fördela de 100% på svaren. hoppas det går att förstå

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Vad betyder siffrorma

2 7 X
2 0 X
2 1 X

att 7 stycken har svarat ett alternativ
att 0 stycken har svarat ett (annat) alternativ
att 1 stycken har svarat ett (tredje) alternativ

?

Om det är så, hur vet du vilka svar som hör ihop med vilket alternativ? Om du inte vet det så kan du aldrig göra din uppdatering med en fråga.

turbofreddanMedlem sedan apr. 2003115 inlägg
#5

hehe jag menar såhär

10personer har svarat på fråga 2
19 personer har svarat på fråga 3

det jag vill är att uppdatera kolumnen som heter AnswerPercent med hur många procent det är. Alltså hur många procent 7 utgör av alla som svarat på fråga två.
det måste vara bra förklarat. När man kör den här sql satsen så ska alla AnswerPercent uppdateras för den frågan.

jag har även ett AnswerID

QID AnswerCOunt AnswerPercent
2 7 X
2 0 X
2 1 X
3 2 x
3 17 x

LarsGMedlem sedan dec. 200012 464 inlägg
#6
UPDATE PollAnswers
  SET AnswerPercent = AnswerCount/
  (select count(*) from pollanswers where id = 2)
 WHERE ID = 2

Om du vill updatera för alla ID på en gång

UPDATE PollAnswers pa
  SET AnswerPercent = AnswerCount/
  (select count(*) from pollanswers where id = pa.id)

10personer har svarat på fråga 2

7 + 0 + 1 = 8

?

turbofreddanMedlem sedan apr. 2003115 inlägg
#7

Operationen måste använda en fråga som kan uppdateras. JAg får inte till det där med (select count(*) from .... hur skriver man det egentligen i access

@ndersMedlem sedan juni 200032 969 inlägg
#8

Om du söker lite på felmeddelandet kan det hända att du får någon träff som har med säkerhetsinställningar att göra.

turbofreddanMedlem sedan apr. 2003115 inlägg
#9

ja fattar dock inte vad jag ska ändra till..

turbofreddanMedlem sedan apr. 2003115 inlägg
#10

Alltså det funkar att uppdatera enkla UPDATE querys typ

UPDATE PollAnswers SET AnswerPercent =  3

varför funkar det inte när jag vill göra

UPDATE pbpoll.Pollanswers SET AnswerPercent =  xxx/(select count(*) from Tabell)

så borde inte ha något med behörigheter när det går att uppdater och lägga in värden i första frågan,. är det något med sub querys eller liknande?

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