Avatar billede krukken Mester
07. november 2004 - 18:07 Der er 7 kommentarer og
2 løsninger

Brug af AVG() på de første 10 rækker i en table

Hej,

Jeg har et problem at AVG() i mysql.

Når man bruger den indbyggede tabel tager den gennemsnittet af alle værdierne i tabellen - også selvom man bruger LIMIT 10.

Hvordan udvælgere man de første 10 rækker(tabellen indeholder mange flere rækker) og udregner gennemsnittet på disse ti rækker?
Avatar billede arne_v Ekspert
07. november 2004 - 18:18 #1
Hvis MySQL 4.1 må du kunne:

SELECT AVG(x) FROM tabel WHERE x IN (SELECT x FROM tabel ORDER BY x LIMIT 10)
Avatar billede arne_v Ekspert
07. november 2004 - 18:19 #2
I ældre versioner er jeg lidt bange for at det er 2 queries:

SELECT x FROM tabel ORDER BY x LIMIT 10

SELECT AVG(x) FROM tabel WHERE x IN (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)
Avatar billede arne_v Ekspert
07. november 2004 - 18:20 #3
Og de er ikke engang gode hvis der kan være flere rækker med samme værdi af x
Avatar billede hmortensen Nybegynder
07. november 2004 - 18:38 #4
Man kan også lave en temp tabel med de 10 rækker, og så udregne gennemsnittet fra den
Avatar billede arne_v Ekspert
07. november 2004 - 18:41 #5
Den undgår endda det sidste problem. Men er nok også en lidt halvdyr måde at gøre det på.

Man skal jo sammenligne med alternativet: udregne genenmsnittet i applikationen
(PHP/ASP/Java/C#/whatever).
Avatar billede krukken Mester
07. november 2004 - 18:42 #6
Hmm - jeg har selv lavet noget andet. Jeg gør bare at jeg helt udlader at bruge AVG(). Også trække jeg værdierne ud at row() og dividere med antallet:-)

>> arne_v skal vi dele pointene?
Avatar billede arne_v Ekspert
07. november 2004 - 18:45 #7
ok
Avatar billede krukken Mester
07. november 2004 - 18:46 #8
Det gør vi så:-)
Avatar billede krukken Mester
07. november 2004 - 18:46 #9
svar
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
Computerworld tilbyder specialiserede kurser i database-management

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