Non riesco a venire a capo di questa query.
Vorrei estrarre i 3 importi (campo valore) maggiori con tutti i dati a essi associati per ciascuna società.


Tab.importi
codice:
id_ordine  id_soc   valore
1               1         10 
2               1         50
3               1         30
4               1         40
5               1         20
6               2        100
7               2        200
8               2        400
9               2        500
10              2        450
La query che ho scritto è questa

codice:
SELECT i1.id_ordine,i1.id_soc,i1.valore
FROM importi i1
INNER JOIN importi i2 ON i2.id_soc = i1.id_soc AND i1.valore <= i2.valore
GROUP BY i1.id_soc,i1.valore
HAVING COUNT(*) <= 3
ORDER BY i1.id_soc ASC, i1.valore DESC;
Apparentemente funziona.
Se però come valori maggiori di id_soc 1 ho 50,40,40 al posto di 50,40 e 30 allora come risultato della query relativamente al gruppo 1 mi viene mostrato solo 50.
Se addirittura metto i tre valori maggiori tutti pari a 50 non me ne viene restituito neanche uno

Come faccio? Grazie a tutti.