Avatar billede r.hegaard Nybegynder
23. december 2011 - 18:07 Der er 3 kommentarer

Beregning af gennemsnit for laveste værdier for hvert ID

Jeg har en tabel med nogle forskellige værdier/point, som alle er bundet til et ID. Hvert ID kan optræde mange gange.
Jeg vil gerne beregne et gennemsnit af de 10 laveste værdier for hvert ID og har forsøgt mig med nedenstående, som desværre begge fejler.
Nogen forslag til, hvordan jeg simplest kan løse problemet med ét statement?

SELECT ID
,(SELECT SUM(Point) FROM (SELECT Point FROM MinTabel WHERE ID=Y.ID ORDER BY Point ASC LIMIT 0,10) X)/10 AS PointAvg
,COUNT(*) AS Antal
FROM MinTabel AS Y
GROUP BY ID
ORDER BY PointAvg ASC

SELECT ID
,SUM(SELECT Point FROM MinTabel WHERE ID=y.ID ORDER BY Point ASC LIMIT 0,10)/10 AS PointAvg
,COUNT(*) AS Antal
FROM MinTabel y
GROUP BY ID
ORDER BY PointAvg ASC
Avatar billede arne_v Ekspert
25. december 2011 - 17:15 #1
Hvis der kan vaere flere med samme antal point, saa tror jeg at det er svaert i ren SQL.

SELECT id,point FROM dintabel ORDER BY id,point

og lad din applikation beregne.
Avatar billede arne_v Ekspert
12. januar 2012 - 21:53 #2
kommentar?
Avatar billede r.hegaard Nybegynder
20. juni 2012 - 19:44 #3
Ja, undskyld - håber stadig på et svar, hvor det kan gøres i rent SQL :-)
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