23. november 2005 - 11:21Der er
7 kommentarer og 1 løsning
SQL sætning
Jeg har en database med et antal rækker, der indeholder svar på nogle spørgsmål. Hver svar går fra 1 til 11, dvs man i spørgsmål 1(række 1) kan have f.eks. 10 personer som har svaret på følgende måde: 1,2,5,8,6,9,10,11,6,7
Hvordan laver jeg nemmest en sql sætning(er) der kan vise hvordan mange personer har svaret, hvad er gennemsnittet af besvarelsen, og hvor mange har svaret henholdvis 1,2,3,4,5,6,7,8,9,10,11
Resultatet skulle gerne være noget i stil med det her: Spørgsmål 1: Antal personer: 10 Gennemsnit:6,5 1 person har svaret:1 1 person har svaret:2 1 person har svaret:5 2 person har svaret:6 1 person har svaret:7 1 person har svaret:9 1 person har svaret:10 1 person har svaret:11
Der er en tabel der hedder eval, og i den der er 66 kolonner navngivet fra v_1 til v_66. Men det er ikke sikkert der altid er lige 66 - der kan både være mindre og flere kolonner.
jeg opretter databasen ud fra en excel fil som genereres fra et andet system, som kan genere x antal spørgsmål til en undersøgelse. Derfor kan der være mindre/flere kolonner. Men det er ikke et must - vi kan bare sige at der altid er 66 kolonner.
v_x svarer til svaret fra et given spørgsmål og er af typen tal.
f.eks. i kolonne v_10 gemmes svarene på spørgsmål nr. 10 og svarene kan være en værdi fra 1 til 11.
det virker - tak. Men hvordan kan jeg gøre det smart, for nu skal jeg jo lave x antal linier kode som er ens ligesom det her:
sql="select avg(v_1) as gennemsnit, count(v_1) as antal from eval"
set db = conn.execute(sql) do while not db.EOF gennemsnit_v1 = db("gennemsnit") antal_v1 = db("antal")
db.movenext loop
Og lige et tillægsspørgsmål. Hvis er person svarer 11 må det ikke tælles med, hvordan gør man det. Du har svaret på det oprindelige spørgsmål, så du har her de 150, men hvis du kan hjælpe med resten vil det være godt.
for f=1 to 66 sql="select avg(v_"& f &") as gennemsnit, count(v_"& f &") as antal from eval where v_"& f &"<>11" set db = conn.execute(sql) do while not db.EOF gennemsnit_v1 = db("gennemsnit") antal_v1 = db("antal") db.movenext loop next
.o) <-- One Eyed Jack
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.