Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2011, 16h36   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2003
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 31
Points : 10
Points : 10
Par défaut 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 ?

Merci pour votre aide
Bridou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 16h45   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
On peut avoir la requête qui te donne le premier jeu de résultats et la composition des tables
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h58.


 
 
 
 
Partenaires

Hébergement Web