Utiliser le nombre total de rows dans la clause LIMIT
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:
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:
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:
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 ?:mrgreen:
Merci pour votre aide