10% eraf boven en onder

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter Wessels

Peter Wessels

07/06/2010 20:40:34
Quote Anchor link
Beste Allemaal,

Ik heb een vraag. Ik heb een aantal gegevens in de database bijvoorbeeld:
Id | Aantal
1 | 1000
2 | 1500
3 | 200
4 | 100
5 | 100
6 | 150
7 | 200
8 | 100
9 | 2
10 | 5

Nu wil ik alles selecteren en vervolgens de bovenste 10% en de onderste 10% eraf te halen. De vraag is, kan dat in 1 keer in 1 query?

Suggesties?

Peter
 
PHP hulp

PHP hulp

19/04/2024 00:42:49
 
Martijn B

Martijn B

07/06/2010 20:43:10
Quote Anchor link
Wat je in ieder geval nodig hebt is :

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

Voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SELECT AVG(Aantal)
FROM tabel


Geeft het gemiddelde terug van het aantal van alle records in tabel.
Gewijzigd op 07/06/2010 20:43:28 door Martijn B
 
Peter Wessels

Peter Wessels

07/06/2010 20:58:17
Quote Anchor link
Nou, het gaat er echt om dat extreme getallen niet voorkomen. Dus de hoogste 1000 en 1500 en de laagste 2 en 5 eruit gefilterd worden.
 
Paul R

Paul R

07/06/2010 21:35:27
Quote Anchor link
is zoiets wat je zoekt?
(test is de naam van je tabel)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
select aantal
from test
where aantal > (select AVG(aantal) from test)*0.20
    and aantal < (select AVG(aantal) from test)*1.80;


edit: met between voor de leuk
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
select aantal
from test
where aantal between (select AVG(aantal) from test)*0.20
    and (select AVG(aantal) from test)*1.80;
Gewijzigd op 07/06/2010 21:41:17 door Paul R
 
Pim -

Pim -

07/06/2010 22:51:03
Quote Anchor link
Nee, moet je anders doen.
Op Paul's manier worden de rijen geselecteerd op waarde, niet op rang.
Je moet gewoon iets met limits en order by doen, dus limiteren op n/5 boven en onder, geschikt op waarde.

Weet niet of dit goede SQL is, ben daar niet goed in.
SELECT *
FROM test
ORDER BY waarde
LIMIT (SELECT count(*) FROM test)/5, (SELECT count(*) FROM test)/5*4
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.