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.