Avatar billede madiedk Nybegynder
14. juli 2008 - 16:41 Der er 13 kommentarer og
1 løsning

svær forespørgsel

Hej

jeg skal lave en forespørgsel der tager gennemsnitsværdien af en afdeling's værdi og så giver mig summen af gennemsnittet af afdelingerne

hver dag bliver der registeret en ny værdi for en afdeling.

udtrækket bliver lavet fra 1 tabel:
afdeling


eks. på afdeling:

afdeling    dato        værdi
45          20/6-2008    10
45          21/6-2008    20
46          20/6-2008    8
46          21/6-2008    6
47          20/6-2008    78
47          21/6-2008    102


så i mit udtræk vil jeg have så hvis jeg i WHERE-sætningen skriver afdeling = 45 and afdeling = 46 and dato >1/6-2008 så skulle den tage 8+6/2 = 7 og 10 20/2 = 15 og så regne summen ud 7+15=22 så forespørgssel skulle kun komme ud med 22.
Avatar billede terry Ekspert
14. juli 2008 - 18:55 #1
SELECT Sum(AvgOfvaerdi) AS SumOfAvgOfvaerdi
FROM (SELECT tabel.afdeling, Avg(tabel.vaerdi) AS AvgOfvaerdi
FROM tabel
WHERE (((tabel.dato)>#6/1/2008#))
GROUP BY tabel.afdeling) WHERE afdeling IN(45, 46);
Avatar billede terry Ekspert
14. juli 2008 - 18:56 #2
.
Avatar billede kjulius Novice
14. juli 2008 - 19:07 #3
Bortset fra, at du ikke vill få nogen rækker valgt ved at kræve både afdeling = 45 og afdeling = 46 opfyldt på samme tid, så burde det kunne ske via en SQL som denne: :-)

SELECT afdeling, AVG(værdi) AS gennemsnit, (SELECT AVG(værdi) FROM dinTabel WHERE (afdeling = 45 or afdeling = 46) and dato > #1-6-2008#) AS TotaltGennemsnit
FROM dinTabel
WHERE (afdeling = 45 or afdeling = 46) and dato > #1-6-2008#
GROUP BY afdeling


Du kommer vist desværre ikke uden om at specificere WHERE kriteriet i begge forespørgsler.
Avatar billede kjulius Novice
14. juli 2008 - 19:17 #4
Men måske har jeg lagt for meget i spørgsmålet. Ved endnu en nærlæsning, kan det også betyde, at du bare ønsker din sum af afdelingsgennemsnittene returneret. Så er det bare med at skrive:

SELECT AVG(værdi) AS TotalGennemsnit
FROM dinTabel
WHERE (afdeling = 45 or afdeling = 46) and dato > #1-6-2008#

(summen af gennemsnittet pr. afdeling = gennemsnittet for alle valgte rækker)
Avatar billede terry Ekspert
14. juli 2008 - 19:18 #5
Doesnt madiedk want the sum of the average?
"og så giver mig summen af gennemsnittet af afdelingerne"
Avatar billede kjulius Novice
14. juli 2008 - 19:21 #6
Oops! Det er da vist forresten ikke korrekt, at summen af gennemsnittene er = det totale gennemsnit, er det?
Avatar billede terry Ekspert
14. juli 2008 - 19:24 #7
No
Avatar billede terry Ekspert
14. juli 2008 - 19:25 #8
at least not always :o)
Avatar billede kjulius Novice
14. juli 2008 - 19:34 #9
Yeah, yeah, some days you just get it all wrong. Do you have those days yourself?

Anyway, terry, you were first and best (as all too often). :-)

Have you tested you query? It seems to me that you need to name the inner query to make it work...
Avatar billede terry Ekspert
14. juli 2008 - 19:38 #10
I quite often have "those days" :o)

I normally test my solutions as I'm not too good at rememebering the exact syntax.
Avatar billede kjulius Novice
14. juli 2008 - 19:42 #11
Oh yeah, syntax is a bitch!
Avatar billede madiedk Nybegynder
14. juli 2008 - 20:47 #12
tak, jeg prøver den i morgen på arbejdet.
Avatar billede madiedk Nybegynder
15. juli 2008 - 11:03 #13
tak
Avatar billede terry Ekspert
15. juli 2008 - 11:11 #14
selv tak
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester