Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2546 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Acces : Group By 15Min

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Acces : Group By 15Min

n°1576636
86bavaria
Posté le 19-06-2007 à 10:03:07  profilanswer
 

Bonjour,
 
J'ai une table dont le contenu ressemble à ça :
 
TSTAMP                            ID                GROUP
10/07/2006 08:02:31 527526     Groupe1
10/07/2006 08:03:34 527527     Groupe2
10/07/2006 08:07:05 527530     Groupe1
 
 
J'aimerais compter le nombre d'occurence de groupe toutes les 15 minutes. Je sais le faire par heure, jour ou mois avec les foontions PartDate appliqués sur TSTAMP mais comment le fair toutes le 15 minutes.
Le résultat devrait ressembler à ca :
 
 
10/07/2006 08:00:00              2
10/07/2006 08:15:00              4
 
etc...
 
 
Merci pour vos éventuelles pistes


Message édité par 86bavaria le 19-06-2007 à 10:03:23
mood
Publicité
Posté le 19-06-2007 à 10:03:07  profilanswer
 

n°1576638
jpcheck
Pioupiou
Posté le 19-06-2007 à 10:08:09  profilanswer
 

un truc du style  
select count where heure between adddate(now,0,'m') and adddate(now,15,'m')  
?

n°1576658
tegu
Posté le 19-06-2007 à 10:34:21  profilanswer
 

Première étape : il faut transformer pour chaque enregistrement l'heure réelle en quart d'heure (champ calculé).
Ça se fait avec l'aide de la formule suivante
(CInt(format$("10/07/2006 08:45:00", "nn" )) \ 15) * 15
Cette formule renvoie 0, 15, 30 et 45 en fonction de l'heure réelle.
Cela te permettra de créer un autre champ calculé avec la nouvelle heure répartie par quart (reprendre la date et remplacer les minutes par le résultat trouvé et les secondes par 00).

 

Sur ce dernier champ tu pourras faire un GROUP BY et ton COUNT fonctionnera.
En théorie. Je crois, À vérifier :)

Message cité 1 fois
Message édité par tegu le 19-06-2007 à 10:35:25
n°1576670
86bavaria
Posté le 19-06-2007 à 10:51:24  profilanswer
 

tegu a écrit :

Première étape : il faut transformer pour chaque enregistrement l'heure réelle en quart d'heure (champ calculé).
Ça se fait avec l'aide de la formule suivante
(CInt(format$("10/07/2006 08:45:00", "nn" )) \ 15) * 15
Cette formule renvoie 0, 15, 30 et 45 en fonction de l'heure réelle.
Cela te permettra de créer un autre champ calculé avec la nouvelle heure répartie par quart (reprendre la date et remplacer les minutes par le résultat trouvé et les secondes par 00).
 
Sur ce dernier champ tu pourras faire un GROUP BY et ton COUNT fonctionnera.
En théorie. Je crois, À vérifier :)


 
Yess je vois bien le principe. J'y connais rien au VBA Access mais je vais tenter ma chance et je reviendrai vers vous le cas echéant.
Si je comprend bien je met le résultat de ma requête dans un nouvelle table dans laquelle j'ajoute une nouvelle colonne avec ta formule puis je fais un group by sur l'heure puis le quart d'heure ?


Message édité par 86bavaria le 19-06-2007 à 10:51:45
n°1576744
tegu
Posté le 19-06-2007 à 13:08:43  profilanswer
 

Non, tu peux créer des champs calculés implicitement dans tes requetes à l'aide de formules de calcul et d'un alias de champ (nom du champ) :

 

SELECT A.champ1, A.champ2, CInt(Format$(...) As ChampCalcul FROM A...

 

Si tu ouvres un recordset sur cette requete, tu auras un champ nommé ChampCalcul directement exploitable.

 

edit: il faut que ton group by porte sur la date et l'heure (modifiée) pour garder un tri correct, à moins que tu ne veuilles regrouper les « 8h15 » de n'importe quel jour écoulé.

Message cité 1 fois
Message édité par tegu le 19-06-2007 à 13:11:17
n°1576829
86bavaria
Posté le 19-06-2007 à 15:38:26  profilanswer
 

tegu a écrit :

Non, tu peux créer des champs calculés implicitement dans tes requetes à l'aide de formules de calcul et d'un alias de champ (nom du champ) :
 
SELECT A.champ1, A.champ2, CInt(Format$(...) As ChampCalcul FROM A...
 
Si tu ouvres un recordset sur cette requete, tu auras un champ nommé ChampCalcul directement exploitable.
 
edit: il faut que ton group by porte sur la date et l'heure (modifiée) pour garder un tri correct, à moins que tu ne veuilles regrouper les « 8h15 » de n'importe quel jour écoulé.


En effet je m'en suis sorti avec :
 

Code :
  1. SELECT Format$(dbo_ACDGROUP.TSTAMP,"hh" ) AS Heure, Fix(Format$(dbo_ACDGROUP.TSTAMP,"nn" )/15)*15 AS [Quart heure], Count(*)


 
Le but étant tous jours confondus de compter les appels reçus par heure et par quart d'heure
 
Merci encore
 
 
Edit : ici la fonction "fix" est plus appropriée, en effet à 55min "cint" arrondira à 4 (car 55 / 15 = 3.6) en non à 3.


Message édité par 86bavaria le 19-06-2007 à 15:41:38
n°1576902
tegu
Posté le 19-06-2007 à 16:50:22  profilanswer
 

Je n'ai pas écris 55 / 15, mais 55 \ 15
Ça n'était pas une faute de frappe mais un opérateur VB qui fait la division et ne garde que la partie entière du résultat :)

n°1576909
86bavaria
Posté le 19-06-2007 à 16:52:37  profilanswer
 

tegu a écrit :

Je n'ai pas écris 55 / 15, mais 55 \ 15
Ça n'était pas une faute de frappe mais un opérateur VB qui fait la division et ne garde que la partie entière du résultat :)


 
ouye je n'avais pas vu. Bé merci encore  :jap:  :jap:


Message édité par 86bavaria le 19-06-2007 à 16:52:43

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Acces : Group By 15Min

 

Sujets relatifs
[SQL Server 2005] Accès au donnée par requete SQL en VBAccès à la BDD
Acces 2007 : création événement[VB.NET/Exchange] Problème : accès refusé à l'appel de la méthode send
Acces SF AS400 avec PHPProblème de sécurité (accès à une section admin)
Créer une newsletter facile d'accèsProblème de requete, COUNT, GROUP BY etc.
[Access 2000 et SQL] Count, Group by et Sort => le sort ne marche pasProblème d'authentification pour accès à une base SQL
Plus de sujets relatifs à : Acces : Group By 15Min


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR