Code sql requete access fmt hh:nn:ss si >24h

Résolu/Fermé
thiefer - 3 sept. 2008 à 09:12
 TEBOLO - 23 oct. 2009 à 18:48
Bonjour @ tous,

j'arrive tout juste sur le forum avec évidemment les quelques questions du débutant...
Je suis en train de migrer une vieille appli excel sur laquelle je suis depuis quelques années mes entraînements et autres sorties de sports, le tout vers Access.
J'ai un peu (pas mal) fouillé les forums et google et j'ai choisi de faire mes calculs au moyen d'une requête que j'utiliserai ensuite en formulaire, état, page ou autre extract vers XL...

Deux problèmes majeurs pour le moment :
- afin de sommer mes heures dont le total est évidemment supérieur à 24h, je pose le code suivant (traduction sql de ma requête en mode création) :
SELECT req_trt_dates.Année, Sum([temps]*86400) AS Totalsec, Int([Totalsec]/3600) & ":" & Int(([Totalsec] Mod 3600)/60) & ":" & ([Totalsec] Mod 3600/60) AS TempsTotal
FROM req_trt_dates
GROUP BY req_trt_dates.Année;


Le résultat obtenu est le suivant :
Année	Totalsec	TempsTotal	   
2002	5977	          1:39:37	   
2003	127795	         35:29:55	   
2004	389670	        108:14:30	   
2005	331419	         92:3:39	   
2006	243349	         67:35:49	   
2007	330209	         91:43:29	   
2008	353878	         98:17:58	 


Tout serait presque parfait si ce n'était le résultat de 2005 qui me montre que le résultat n'est pas affiché au format souhaité qui pour les minutes doit être sur deux car.
A ce titre, ce doit être la même chose pour les secondes.

Deuxième question :
comment calculer des moyennes de temps sans considération des valeurs nulles ?
Et la question subsidiaire qui est corollaire de celle-ci, coment calculer une moyenne pondérée (fréquence cardiaque moyenne pondérée par le temps de chaque course) ?

Voilà mes quelques interrogations du moment,

Si quelqu'un avait la gentillesse de comprendre mon langage de non informaticien pour me donner des réponses faciles à mettre en application...

Merci par avance

TF
A voir également:

4 réponses

Salut Latelygeek et merci beaucoup,

pour info, juste une petite modif sur ta proposition car le ; n'était pas accepté donc, le code est
SELECT req_trt_dates.Année, Sum([temps]*86400 AS Totalsec, Int([Totalsec]/3600) & ":" & Format(Int(([Totalsec] Mod 3600)/60),"00") & ":" & Format(([Totalsec] Mod 3600/60),"00") AS TempsTotal
FROM req_trt_dates
GROUP BY req_trt_dates.Année;

J'ai oté le double car sur l'année au passage


J'ai fait pleins de tests et c'est ok pour le calcul des moyennes, excellent !!!


Enfin pour le calcul de la moyenne pondérée, je fais quelques tests et un petit jeu d'essai et je te reviens.

@+ tard

TF
1
SALUT A VOUS ;
Je voudrais solliciter votre aide pour un problème qui me cause bocoup d’ennuis.
J’ai suis en train de concevoir une BD qui doit gérer un établissement scolaire. Partant des notes jusqu’aux bulletins. Mais je suis confronté a quelques problème.

1er PROBLEME
Je n’arrive pas à calculer les moyennes par matière et faire les rangs par ordre d’excellence sachant qu’il y a plusieurs classes (6e1… 6e2 - 5e1….5e6 – 4e1…4e3 – 3e1…3e7 – 2nd1 A.D – 1ere A.C.T – Tle A.C.D). Et que certains élèves sont dispensés en Sport qui est une matière.

Dans ma requête moyenne et rang des élèves par matière et par classe les champs sont les suivant :
N°mle ; nom ; prenom ; N°evaluation; DateEvaluation; Matière; Type Evaluation(devoir ou Interro) NoteEvaluation ; coeficient (Devoir 1ou2/ interro 0.5); Dispenser .
CES CHAMPS SONT DE 2 TABLE : Elèves et Evaluations

Est-ce que les champs utilisés sont nécessaires ; insuffisant ? quel suggestion pouvez vous faire ?
Quelles formules pourrai-je utiliser pour le calcule des moyennes et des rangs par matière?

Quelles formules pourrai-je utiliser pour le calcule des moyennes et des rangs du trimestre?

2eme PROB
Est-ce qu’une table MATIERE avec pour champ : philosophie ; maths ; svt etc…est nécessaire dans la mesure ou matière existe en tant que champ dans la table Evaluation avec une liste déroulante des matières. SI NON; POURQUOI ? SI OUI; POURQUOI ?

3eme PROB
Les Heures d’absences sont sanctionnés. 3heures d’absences équivaut à 1 point qui est soustrait sur la note de conduite en fin de trimestre.


JE SUIS UN DEBUTANT SUR ACCESS

Merci a vous et a bientôt.
yeotebolo@yahoo.fr
0
Salut latelygeek

voici déjà mon jeu d'essai :

date	        temps	     f moyligne	f max
03/03/2007	00:39:45	174	184
05/03/2007	00:33:17	174	193
10/03/2007	00:59:06	167	186
11/03/2007	00:57:26	166	182
15/03/2007	01:09:21	164	182
16/03/2007	01:03:21	156	177
22/03/2007	01:00:34	172	190
25/03/2007	00:49:14	145	166
26/03/2007	01:38:00	151	174
31/03/2007	01:14:33	165	180
01/04/2007	00:40:08	157	184
02/04/2007	00:50:14	158	170
03/04/2007	01:21:50	169	186
05/04/2007	01:36:02	153	189
07/04/2007	01:36:13	158	189
09/04/2007	01:29:10	159	186
11/04/2007	00:42:44	150	181
12/04/2007	00:57:16	163	180
13/04/2007	01:45:44	154	175
15/04/2007	00:57:42	162	197
20/04/2007	00:48:36	158	198
21/04/2007	01:51:08	156	177
22/04/2007	01:03:52	166	201
25/04/2007	00:31:13	174	193
04/05/2007	00:40:00	169	185
06/05/2007	00:40:31	164	173
08/05/2007	00:37:21	169	185
10/05/2007	00:45:00	169	185
11/05/2007	00:58:03	159	184
12/05/2007	00:56:23	169	179
13/05/2007	00:41:24	169	163
20/05/2007	01:14:20	169	184
25/05/2007	01:11:42	169	184
26/05/2007	01:20:30	165	188
29/05/2007	00:53:19	174	188



voici ensuite ce que je souhaite obtenir :

fmoystat = sommeprod(temps;fmoyligne)/somme(temps)
%fmax = fmoystat/freq max théorique ou /FCM réelle
FCM pour exemple de calcul du %fmax	moyenne traditionnelle pour comparaison

mois    fmoystat  %fmax   FCM pour ex de calc	moyenne trad pour comparer
mars-07	162,12	  89,57%	  181	                  163,40
avr-07	159,04	  87,87%	  181	                  159,79
mai-07	167,60	  93,11%	  180	                  167,73
				
moyenne trad global : 163,31
moyenne des moyennes trad : 163,64
moyenne des fmoystat : 162,92				
fmoystatglobal : 162,25


En caractères gras les résultats que je cherche à obtenir.

Voilà, si tu penses pouvoir m'en sortir ou si quiconque pense d'ailleurs pouvoir le faire, le but restant de calculer ces champs en mode requête pour ne pas stocker de données résultantes et variables, donc en sql.

Encore mille mercis par avance,

TF
0
Bonjour @ tous,

je suis finalement parvenu à la solution qui était moins coriace que ce que je craignais.
Si cela peut servir à l'un d'entre vous, tant mieux, je vous la donne, il sufisait d'ajouter dans le SELECT le code suivant :
Sum([table].[temps]*[table].[f moy])/Sum([table].[temps]) AS FrqMoy

Je ferme donc le post en résolu mais je reviens bientôt avec d'autres questions, c'est sûr !!!

En attendant, merci à tous ceux qui m'ont aidé sur le forum ou par mail direct,

@ bientôt

TF
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
3 sept. 2008 à 13:01
SELECT req_trt_dates.Année, Format(Sum([temps]*86400);"00") AS Totalsec, Int([Totalsec]/3600) & ":" & Format(Int(([Totalsec] Mod 3600)/60);"00") & ":" & Format(([Totalsec] Mod 3600/60);"00") AS TempsTotal
FROM req_trt_dates
GROUP BY req_trt_dates.Année;

Ca devrait fonctionner.

Pour ce qui est du calcul de moyenne, Access ne tiendra pas compte des valeurs nulles (Nulles, et non à ZERO, attention)

Et pour le dernière question: Mets quelques exemples avec les chiffres que tu cherches à obtenir, j'ai peur de dire des bêtises, sinon...
-1