[MySQL] Gemiddelde van top 10

Pagina: 1
Acties:
  • 134 views sinds 30-01-2008
  • Reageer

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
Ik probeer een gemiddelde op te halen van een top 10 uit de database.
Gemiddelde is natuurlijk:
code:
1
SELECT AVG(veld) FROM tabel

En de top 10 is ook niet zo moeilijk:
code:
1
SELECT veld FROM tabel ORDER BY veld DESC LIMIT 10

Maar als ik dit combineer werkt het niet, dan blijft ie het gemiddelde van de hele dataset geven:
code:
1
SELECT AVG(veld) FROM tabel ORDER BY veld DESC LIMIT 10


Iemand een oplossing?

  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 19:48
Subselectje, mits je MySQL-versie dit ondersteunt?

  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
Hoe zou die er dan uit moeten zien?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

dajappie schreef op woensdag 03 mei 2006 @ 17:38:
Subselectje, mits je MySQL-versie dit ondersteunt?
Je kan geen LIMIT gebruiken in subselects. ;)

Wat je wel kan doen is een temporary table gebruiken. Anders dan dat zitten er niet zoveel dingen op, tenzij je het in je applicatie wil gaan afhandelen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • willem-alex
  • Registratie: December 2001
  • Laatst online: 18-05-2024

willem-alex

you don't wanna know ...

Topicstarter
Denk dat ik dan dat maar moet gaan doen, ik haal ze eerst wel allemaal op met de LIMIT en dan ga ik ze wel delen door 10 ofzo... Ik was alleen benieuwd of het ook met MySQL kon. Bedankt!

Verwijderd

Volgens mij gaat het zo:
SELECT AVG(t.Waarde) FROM tbl_Getallen t, tbl_Getallen u
ORDER BY u.Waarde DESC LIMIT 10;
Ik zou het nog wel ff controleren

Misschien moet het ook wel zo zijn:
SELECT AVG(t.Waarde) FROM tbl_Getallen t, tbl_Getallen u
WHERE u.Waarde = t.Waarde
ORDER BY u.Waarde DESC LIMIT 10;

Een van de 2 oplossingen is het vlgs mij

[ Voor 41% gewijzigd door Verwijderd op 03-05-2006 18:31 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Die oplossingen zijn beiden niet goed, omdat hij nu de eerste 10 gemiddelden neemt, en er is maar één gemiddelde. Sowieso maak je op je eerste manier een cartesisch product, en op de tweede manier join je een tabel met zichzelf, op hetzelfde veld, waardoor je effectief dezelfde tabel krijgt (tenminste, als veld een uniek veld is).

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Ok, jammer . Ik kon het hier ff niet controleren. Volgens mij moet het toch gaan met SQL. Als ik eruit kom plaats het wel hier (dan wel getest :) )
Suc6 anyway
Pagina: 1