Bonjour,

N'étant pas expert en requete SQL, je vous soumet mon petit probleme.

J'ai une requete qui me retourne le temps de traitement (en secondes) d'une tache par semaine.

Ex:
SEMAINE |ID_TACHE | temps de traitement|
1 |123 | 300
1 |124 |600
1 |125 |5000
2 |126 |100
2 |127 |2500
2 |128 |500

Je me sers de ces resultats pour faire un graphique de statistique avec comme données:
SEMAINE | NOMBRE DE TACHE TRAITEES | TPS TRAITEMENT MOYEN
Semaine 1 | 3 taches | 1966
Semaine 2 | 3 taches | 1033

Finalement, mon probleme :
Je voudrais enlever des resultats de la premiere requetes les 10% qui representent les plus long temps de traitement.

Est-il possible de faire cela en une seule requete avec une clause LIMIT, qui prendrait en compte le nombre de resultats que renvoie la requete, quelque chose du style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT semaine, id_tache, temps 
FROM taches
ORDER BY temps ASC
 LIMIT 0, CEIL(NOMBRE_DE_RESULTATS_RENVOYES - NOMBRE_DE_RESULTATS_RENVOYES*0.2)
Je voudrais le faire en une seule requete car celle ci prend deja 30 secondes a l execution (la table a des millions d'enregistrements et je fais des jointures, etc...). Si possible, j'aimerais eviter de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT COUNT(id_tache) FROM taches
Dans un langage intermediaire:
MA_LIMITE = CEIL(NOMBRE_DE_RESULTATS_RENVOYES - NOMBRE_DE_RESULTATS_RENVOYES*0.2)

Puis:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT semaine, id_tache, temps 
FROM taches
ORDER BY temps ASC 
LIMIT 0, MA_LIMITE
Est-ce faisable, suis-je clair ?

Merci pour votre aide