Ajout d'un champ

Fermé
druds - 23 sept. 2014 à 11:08
 druds - 23 sept. 2014 à 12:40
Bonjour,

J'ai une table contenant une date de poste, un temps d'exécution, un temps de préparation, l'objet nécessitant ces temps et d'autres champs sans intérêt pour ma question.

Posons des noms
Table Temps
DateP
TpsE
TpsP
Obj (Code de l'objet Alphanumérique)

Je me demandais si il est possible seulement avec un requête (sans développement) de pouvoir calculer en fonction d'un objet et des 10 dernières date de poste la somme des deux temps pour faire la moyenne.

Exemple :
J'ai un objet, à une date il m'a fallu 20 minutes pour le préparer et 10 pour l'exécuter. Mais pour cet objet sur une autre date j'ai eu besoin de 10 et 20 minutes etc et je peux avoir x date de poste comme cela.
Et donc je voudrais faire les sommes sur les 10 dernières (les plus récentes) date, ajouter les deux totaux pour en sortir une moyenne temps.

Je coince au niveau de la sélection des dates (les 10) car faire une somme sur toutes les dates => SUM(TpsE) et un GROUP BY(Obj).

Je pense qu'il faut faire un sous requête dans la close where du style dateP >= dateP (la dixième donc) de cette objet comme on ne fait la somme que sur les 10 dates ?
Mais comment faire justement cette requête ? Min ? Top 10 ?

Merci pour votre aide

1 réponse

Pour l'instant je n'arrive qu'a faire la somme sur les objets ayant une date de poste étant dans les 10 dernière de la table.

Alors que si vous avez bien compris je voudrais que pour chaque objet je regarde ses 10 dates de postes les plus récente (il se peut par exemple que ces dates soit en 2013 ça n'a pas d'importance).

Voici ma requête :

SELECT SUM(ClE.[TpsE]) as 'Run', SUM(ClE.[TpsP]) as 'Setup', ClE.[Obj] as 'No' 
FROM matable..[temps] AS ClE 
WHERE ClE.[No] in (SELECT ClE.[Obj] 
                   from matable..[temps] AS ClE2                             
                   where ClE.[No]=ClE2.[No] and ClE2.[DateP] in 
                                        (Select TOP 10 ClE3.[DateP] 
                                         FROM matable..[temps] AS ClE3
                                         ORDER BY 1 DESC)) 
GROUP BY ClE.[No];"


Merci
0