tranches horaires [Oracle] - SQL/NoSQL - Programmation
Marsh Posté le 20-07-2009 à 15:47:14
Il y a un autre langage derrière, ou il te faut forcément du 100% SQL?
Marsh Posté le 20-07-2009 à 15:49:16
he bien, je suis en train de chercher une solution pour le faire en 100% sql mais comme ca me gonfle, il ya des chances que je fasse cela en code.
J'avoue toutefois que je preferais une solution SQL.
v.
Marsh Posté le 20-07-2009 à 15:50:08
Tu connais les tranches horaires à l'avance? Si oui tu as toujours la solution de la grosse union moche
Marsh Posté le 20-07-2009 à 15:54:58
les tranches horaires sont les heures de la journee d'exploitation decoupee par tranche de 10 minutes.
Idealement, je souhaiterais donc du 5h-21h, mais bien evidemment, je peux me contenter de la journee complete si ca semble plus simple.
v.
Marsh Posté le 20-07-2009 à 16:08:39
vonm a écrit : les tranches horaires sont les heures de la journee d'exploitation decoupee par tranche de 10 minutes. |
Des tranches de 10 minutes ça doit pouvoir se faire ça par contre en bidouillant un peu... un truc du genre
select machin, truc, to_char(madate, 'HH24'), substr(to_char(madate, 'MI'), 0, 1), count(*)
from majolietable
group by machin, truc, to_char(madate, 'HH24'), substr(to_char(madate, 'MI'), 0, 1);
non?
Marsh Posté le 08-08-2009 à 20:41:48
skeye a écrit : |
'soir...
Je propose :
select ceil((madate-date '-3000-01-01')*144)/144+date '-3000-01-01', ceil((madate-date '-3000-01-01')*144)/144+date '-3000-01-01' + 1/144, count(*)
from majolietable
group by ceil((madate-date '-3000-01-01')*144)/144+date '-3000-01-01', ceil((madate-date '-3000-01-01')*144)/144+date '-3000-01-01' + 1/144;
Mais ici, je ne peux pas tester... Donc à voir. En tout cas, je checkerai ça lundi au boulot, et je corrigerai au besoin...Pour le boulot, j'avais fait la même chose, donc sûr que ça fonctionne comme ça
Marsh Posté le 10-08-2009 à 11:57:43
john cleese a écrit :
Je propose : select ceil((madate-date '-3000-01-01')*144)/144+date '-3000-01-01', ceil((madate-date '-3000-01-01')*144)/144+date '-3000-01-01' + 1/144, count(*) Mais ici, je ne peux pas tester... Donc à voir. En tout cas, je checkerai ça lundi au boulot, et je corrigerai au besoin...Pour le boulot, j'avais fait la même chose, donc sûr que ça fonctionne comme ça |
Alors, supposons que ta table (nommons-là FRANCOISE) soit de cette forme :
site (varchar2)
date_operation (date ou timestamp)
+ diffèrents champs concernant le détail de l'opération
==> ta requête pour obtenir le nb. d'opérations par tranche de 30 minutes serait de la forme :
select site,
to_char(floor((date_operation-date '-3000-01-01')*48)/48+date '-3000-01-01','HH24:MI:SS') heure_debut,
to_char(floor((date_operation-date '-3000-01-01')*48)/48+date '-3000-01-01' + 30/1440 - 1/86400,'HH24:MI:SS') heure_fin,
count (*)
from FRANCOISE
group by
site,
to_char(floor((date_operation-date '-3000-01-01')*48)/48+date '-3000-01-01','HH24:MI:SS'),
to_char(floor((sysdate-date '-3000-01-01')*48)/48+date '-3000-01-01' + 30/1440 - 1/86400,'HH24:MI:SS');
Pour t'en assurer, essaie déjà ceci :
select
to_char(floor((sysdate-date '-3000-01-01')*48)/48+date '-3000-01-01','HH24:MI:SS') ,
to_char(floor((sysdate-date '-3000-01-01')*48)/48+date '-3000-01-01' + 30/1440 - 1/86400,'HH24:MI:SS')
from dual;
Marsh Posté le 27-09-2011 à 17:13:50
Désolé de remonter le topic mais j'ai sensiblement le même problème en mySQL
Bonjour à tous,
je cherche à créer une requête qui sélectionne le nombre d’occurrences de trois activité sur une tranche horaire donnée, et ce sur une journée.
Basiquement, voilà comment je récupère les trois activités sur une seule tranche horaire :
Code :
|
Comme vous pouvez le voir, la requête va être énorme !
De plus, je vais devoir filtrer le tout, c'est à dire quelque chose comme ça :
Code :
|
Auriez-vous une solution plus optimale ?
Marsh Posté le 27-09-2011 à 17:28:32
Code :
|
Marsh Posté le 20-07-2009 à 15:40:59
Bonjour,
Je dispose d'une requete qui me donne une liste d'operation effectuées avec l'horodatage de ces operations.
Je souhaiterais presenter ces informations sous la forme de nombre d'operations par tranche horaire
par exemple :
ma requete me renvoit :
Site; date; heure; nb_operations
Site1; 02/05/09; 15:59:00; 15
Site 2; 02/05/09;17:44:00;22
etc...
je souhaiterais presenter les donnees sous la forme d'un tableau croise :
Site;tranche1(15:30:00-15:59:59), tranche2(16:00:00-16:29:59);...
Site1;15;0;0;0;...
Site2;0;0;0;0;...;22;0;...
A priori, il semblerait qu'il faille utiliser un pivot, mais j'avoue que je ne vois pas bien comment gerer ca et surtout comment gerer les tranches horaires.
Merci d'avance pour toutes vos suggestions.
v.