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
La query che ho scritto è questacodice: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
Apparentemente funziona.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;
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.

Rispondi quotando
