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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aide pour une requete "nombre de connexion par tranche horaire"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour une requete "nombre de connexion par tranche horaire"

n°430223
-bigfoot-
Posté le 17-06-2003 à 11:15:27  profilanswer
 

Salut,
 
j'explique mon problème
J'ai une table de logs (à chaque fois qu'un utilisateur se connecte à une certaine application, la table est renseignée avec son nom de login avec la date et heure)
 
J'aimerais faire une requete qui liste par tranche horaire de deux heures le nombre de connexion qui ont lieu par exemple :
 
 
date  | 00h00-02h00 | 02h00-04h00 | 04h00-06h00 | ....
16/06      5              8             3          8
17/06      4              9             7          4
 
Mais j'ai aucune idée de la requête ???
Ou avez vous une astuce ??
 
Merci de votre aide :jap:    

mood
Publicité
Posté le 17-06-2003 à 11:15:27  profilanswer
 

n°430264
sinse
Posté le 17-06-2003 à 11:45:01  profilanswer
 

Salut!
J'ai pas testé pour savoir si ça marche mais il doit falloir écrire un truc du style suivant :
 
SELECT [Nbre de log]
FROM Ticket_incident
WHERE [Heure] BETWEEN Heure de debut AND Heure de fin;
 
Apres je sais pas avec quoi tu travailles mais tu peux peut etre
faire une loop et incrementer les variables Heure de debut et de fin de 2 à chaque fois...
 
@+
Seb

n°430288
-bigfoot-
Posté le 17-06-2003 à 12:00:34  profilanswer
 

Cette requette est fait dans une page asp (connexion sous oracle)
et biensur le résultat est mis dans un tableau
 
C'est ce que je pensais faire mais je dois faire une requete par tranche horaire alors ??

n°430364
sinse
Posté le 17-06-2003 à 13:17:32  profilanswer
 

Il existe peut être un moyen de faire ça avec une seule requête mais je vois pas comment se serait possible :??:  
En tout cas si tu trouves la solution ça m'interesse
bon courage
sinsé

n°430423
mrbebert
Posté le 17-06-2003 à 13:43:32  profilanswer
 

C dépend des fonctions de manipulation d'heure qui sont disponibles.
Si tu en as une qui te permet d'extraire l'heure, je pense que tu pourras écrire : GROUP BY (HOUR(heure) / 2)

n°430472
vttman2
Je suis Open ...
Posté le 17-06-2003 à 14:05:23  profilanswer
 

Bon j'ai pas d'Oracle sous la main, mais ...
 
... mais si tu arrives à trouver une fonction  
qui arrondi les heures 13H30 -> 13H appelons là ARROND
 
 
alors avec un truc comme ça j'y arriverai ...
 
select madate, sum (decode((ARROND(monheure) MOD 2) * 2,0,1,0),
sum (decode((ARROND(monheure) MOD 2) * 2,2,1,0),
sum (decode((ARROND(monheure) MOD 2) * 2,4,1,0),
...
sum (decode((ARROND(monheure) MOD 2) * 2,22,1,0)
from matable
group by madate
 
ex : 17H30 => ARROND(17H30) => 17H
 
17H MOD 2 => 8
8 * 2 => 16
 
sum (decode((ARROND(monheure) MOD 2) * 2,16,1,0) => +1 sur
le creneau 16-18H
 
Bon c juste une idée en passant  :sarcastic:  
 
 

n°430683
-bigfoot-
Posté le 17-06-2003 à 15:29:21  profilanswer
 

Salut vttman2,
elle correspond à quoi ta fonction decode ?

n°430705
vttman2
Je suis Open ...
Posté le 17-06-2003 à 15:43:57  profilanswer
 

-BigFoot- a écrit :

Salut vttman2,
elle correspond à quoi ta fonction decode ?


 
benh le decode c une instruction Oracle style
 
decode(monchamp, 15,'quinze',16,'seize','?')
 
Dans cet exemple  
si monchamp contient le valeur 15 l'instruction  
decode renvoit 'quinze'
si monchamp contient le valeur 16 l'instruction  
decode renvoit 'seize'
Sinon elle renvoit '?'
 

n°430706
-bigfoot-
Posté le 17-06-2003 à 15:46:30  profilanswer
 

oki
merci pour ta réponse :jap:

n°430723
Agagax
Posté le 17-06-2003 à 16:00:01  profilanswer
 

Essaye cela:
 
SELECT JOUR,
       SUM(A),
       SUM(B),
       SUM(C),
       SUM(D),
       SUM(E),
       SUM(F),
       SUM(G),
       SUM(H),
       SUM(I),
       SUM(J),
       SUM(K),
       SUM(L)
FROM (SELECT JOUR,  
             DECODE(TRANCHE,0,SUM(TOTAL)) A,
             DECODE(TRANCHE,2,SUM(TOTAL)) B,
             DECODE(TRANCHE,4,SUM(TOTAL)) C,
             DECODE(TRANCHE,6,SUM(TOTAL)) D,
             DECODE(TRANCHE,8,SUM(TOTAL)) E,
             DECODE(TRANCHE,10,SUM(TOTAL)) F,
             DECODE(TRANCHE,12,SUM(TOTAL)) G,
             DECODE(TRANCHE,14,SUM(TOTAL)) H,
             DECODE(TRANCHE,16,SUM(TOTAL)) I,
             DECODE(TRANCHE,18,SUM(TOTAL)) J,
             DECODE(TRANCHE,20,SUM(TOTAL)) K,
             DECODE(TRANCHE,22,SUM(TOTAL)) L  
      FROM (SELECT TO_CHAR(LADATEHEURE,'DD/MM') JOUR,
                   TRUNC(TO_CHAR(LADATEHEURE,'HH24')/2)*2 TRANCHE,
                   COUNT(*) TOTAL
            FROM TABLELOG
            GROUP BY TO_CHAR(LADATEHEURE,'DD/MM'),
                     TRUNC(TO_CHAR(LADATEHEURE,'HH24')/2)*2)
      GROUP BY JOUR, TRANCHE)
GROUP BY JOUR;
 
Les colonnes A à L correspondant aux tranches de la journée par 2 heures (12 tranches donc).

mood
Publicité
Posté le 17-06-2003 à 16:00:01  profilanswer
 

n°430802
-bigfoot-
Posté le 17-06-2003 à 16:48:18  profilanswer
 

[:c4_exodusss]  
Merci pour votre aide à tous et en particulier à Agagax
J'ai essayé ta solution et c'est exactement ce que je veux
[:flclsd] [:flclsd] [:flclsd]


Message édité par -bigfoot- le 17-06-2003 à 16:54:13
n°431154
MagicBuzz
Posté le 17-06-2003 à 20:28:55  profilanswer
 

J'ai le droit de vomir ? :D
 
Bon, en bref, vouloir ramener ça en plusieurs colonnes est pas bien malin, puisque les deux axes sont dérivés de la même variable. Il n'y a donc qu'une colonne à retourner, et la requête est un peu plus claire :
 

select sum(cnx_id), to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2), 0) * 2) || 'h00-' || to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2) + 1, 0) * 2) || 'h00', to_char(dte_cnx, 'DD/MM/YYYY')
from connections
group by to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2), 0) * 2) || 'h00-' || to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2) + 1, 0) * 2) || 'h00', to_char(dte_cnx, 'DD/MM/YYYY')


 
Simple comme choux.


Message édité par MagicBuzz le 17-06-2003 à 20:29:44
n°431683
vttman2
Je suis Open ...
Posté le 18-06-2003 à 11:09:42  profilanswer
 

MagicBuzz a écrit :

J'ai le droit de vomir ? :D
 :heink:  
 
Bon, en bref, vouloir ramener ça en plusieurs colonnes est pas bien malin, puisque les deux axes sont dérivés de la même variable. Il n'y a donc qu'une colonne à retourner, et la requête est un peu plus claire :
 

select sum(cnx_id), to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2), 0) * 2) || 'h00-' || to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2) + 1, 0) * 2) || 'h00', to_char(dte_cnx, 'DD/MM/YYYY')
from connections
group by to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2), 0) * 2) || 'h00-' || to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2) + 1, 0) * 2) || 'h00', to_char(dte_cnx, 'DD/MM/YYYY')


 
Simple comme choux.
 :sleep:  
 

n°431686
MagicBuzz
Posté le 18-06-2003 à 11:12:11  profilanswer
 

Bah c'est la mise en forme au format des heures qui est longue, la requête elle-même est toute petite ;)

n°431933
Agagax
Posté le 18-06-2003 à 15:02:28  profilanswer
 

MagicBuzz a écrit :

J'ai le droit de vomir ? :D
 
Bon, en bref, vouloir ramener ça en plusieurs colonnes est pas bien malin, puisque les deux axes sont dérivés de la même variable. Il n'y a donc qu'une colonne à retourner, et la requête est un peu plus claire :
 

select sum(cnx_id), to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2), 0) * 2) || 'h00-' || to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2) + 1, 0) * 2) || 'h00', to_char(dte_cnx, 'DD/MM/YYYY')
from connections
group by to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2), 0) * 2) || 'h00-' || to_char(round(to_number(to_char(cnx_dte, 'HH24')) / 2) + 1, 0) * 2) || 'h00', to_char(dte_cnx, 'DD/MM/YYYY')


 
Simple comme choux.


 
Sérieusement, à quoi va lui servir ton post ?
 
Premièrement, tu ne réponds pas à sa question qui est d'afficher les comptages sur plusieurs colonnes correspondant aux plages horaires d'une journée pour ensuite l'inclure dans un tableau dimensionné à cet effet.
S'il avait voulu le faire sur une colonne, je pense qu'il n'aurait pas eu besoin de poster ici...
 
Deuxièmement, ta requête est incorrecte.
Que vas tu obtenir un sum(cnx_id), hein ? il s'agit d'un comptage du nombre de lignes !  
De plus il y a une coquille dans la syntaxe de ta deuxième colonne.
Quant à la clarté de la présentation de ta requête, je laisse le soin aux lecteurs de juger.
 
Troisièmement, ce que j'ai écrit n'est qu'une façon de faire. Il y en a probablement d'autres.  
La requête peut être optimisée. J'aurais pu aussi nommer clairement les colonnes par "00h00-02h00"...
On pourrait aussi très bien utiliser du PL, etc...
 
Enfin pour conclure, continue à vomir sur ceux qui prennent le temps de répondre à ceux qui cherchent de l'aide...
J'apprécie de venir sur ce forum mais je n'ai pas beaucoup le temps de lire et d'intervenir, et ce n'est pas ce genre de comportement puéril qui va m'inciter à le faire plus souvent.
Ni moi, ni ceux qui sont de passage sur ce forum.

n°431947
MagicBuzz
Posté le 18-06-2003 à 15:18:51  profilanswer
 

Très franchement, y'a beaucoup de gens qui utilisent le sgbd pour faire la mise en page ?
C'est pas le boulot du sgbd, donc la répartition en autant de colonnes qu'il y a de tranches horraire, très franchemement je le laisse à l'appli de reporting qui bosse à partir de la requête...
 
Deplus, ouais, j'ai laissé deux coquilles. Désolé de pas avoir oracle chez moi.
 
Et je ne vois pas ce qu'il y a de mal à présenter une autre solution (ma requête est deplus extrêment plus simple, et bien plus propre).
 
Pour finir, je te laisse la réécrire de façon plus sexy, perso je vois pas comment la rendre plus sexy, j'y peut rien si à cause de la présentation la déclaration du champ fait deux lignes... C'est peut-être aussi pour ça que je bosse toujours sur 21", pour pas être emmerdé avec des retours à la ligne en cas de requêtes complexes...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aide pour une requete "nombre de connexion par tranche horaire"

 

Sujets relatifs
[ACCESS] Requête MAJ avec un MaxREquete asp sur sql serveur 2000
[ASP syntaxe sql ]requete d'interrogations d'une base access (newbee)[C] Aide sur les Socket
[access]petit souci tout bete de requete sql...[CSS / link rel/PHP] aide mon CSS marche plus si je le link... (PHP)
[ADA] Les références sous ada besoin d'aidecréation d'une aide dans access 97
Petite aide pour la réalisation d'un sniffer en JAVA[vbscript]-besoin d'aide sur une fonction
Plus de sujets relatifs à : Aide pour une requete "nombre de connexion par tranche horaire"


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