IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Statistiques par tranche horaire


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Statistiques par tranche horaire
    Bonjour,
    Après une recherche infrutueuse, je viens exposer mon problème.
    J'ai une table enregistrant l'arrivée et le départ de participants à des activités.
    La table contient une dizaine de champs dont :
    - DATEIN date au format "dd/mm/yyyy"
    - HOURIN heure d'arrivée "HH:MM"
    - HOUROUT heure de sortie "HH:MM".

    Je dois sortir des statistiques d'occupation par tranche de 15 minutes.
    Cela signifie qu'un participant arrivé à 09:45 et sorti à 11:00 doit être repris dans les 5 tranches horaire (09:46>10:00 - 10:01>10:15 - 10:16>10:30 - 10:31>10:45 - 10:46>11:00).

    Je pensais avoir trouvé mon bonheur dans cette discussion malheureusement c'est pour une base Oracle et je ne sais pas traduire le code pour SQL.

    Merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    CREATE FUNCTION [dbo].[Arrondi_Heure]
    (
    	@Heure Datetime = 0, @Precision_Min Int = 15
    )
    RETURNS DATETIME
    AS
    BEGIN
    	DECLARE @Heure_Number Float ,
    			@Heure_Number_Arrondi Float,
    			@Jour_Float_Arrondi Float,
    			@Heure_Retour_Float Float
     
    		set @Jour_Float_Arrondi = floor(cast(@Heure as float))
    		set @Heure_Number = DATEDIFF(minute, cast(@Jour_Float_Arrondi as datetime), @Heure )
    		set @Heure_Number_Arrondi = FLOOR ( @Heure_Number / @Precision_Min ) * @Precision_Min
    		set @Heure_Retour_Float = @Jour_Float_Arrondi + @Heure_Number_Arrondi / 1440.0
     
    	return cast(@Heure_Retour_Float as datetime)
     
    END
    Je t'offre une fonction qui permet d'arrondir suivant une heure donnée avec une précision donnée.
    Par contre, ça utilise des dates au format datetime, ça ne prend pas en charge les formats exotiques qui compliquent l'existence.

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour cette fonction qui je l'avoue ne pas pas résoudre mon problème à 100% puisque je n'ai pas de format datetime sur les champs !
    Par contre cela m'a mis sur la voie pour solutionner mon problème.
    Comme je souhaitais avoir pour une date donnée le nombre de participants par plage horaire, j'ai créé une table avec les plages souhaitées et je compare les HOURIN - HOUROUT avec les valeurs de cette table.
    Cela tourne à merveille avec un petit bémol : je suis contraint pour que cela tourne tous les jours d'avoir des plages qui certains jours ne sont jamais utilisées.
    Mais j'ai une solution avec cette requête :
    SELECT
    h.min_time,
    h.max_time,
    k.datein,
    count(*) AS nb_lignes
    FROM SM_HOURSRANGS h
    JOIN SM_PARTICIPANTS k
    ON k.hourin <= h.max_time AND k.hourout > h.min_time
    WHERE k.datein = '29/12/2010'
    GROUP BY k.datein, h.min_time, h.max_time
    ORDER BY k.datein, h.min_time

    C'est peut-être une voie détournée pour solutionner mon besoin ...
    Si quelqu'un a une autre solution, je suis ouvert !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sysdile Voir le message
    Merci pour cette fonction qui je l'avoue ne pas pas résoudre mon problème à 100% puisque je n'ai pas de format datetime sur les champs !
    C'est le problème de vouloir réinventer la roue.
    Il faut vivre avec ensuite!
    Bon courage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requête par tranche horaire et par jour
    Par lieselotte dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 04/05/2009, 12h57
  2. Réponses: 1
    Dernier message: 26/03/2009, 19h43
  3. Calcul d'heures par tranche horaire
    Par A0080 dans le forum Excel
    Réponses: 11
    Dernier message: 05/03/2008, 14h19
  4. regroupement par tranche horaire
    Par Tiresia dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/06/2007, 10h50
  5. Récupérer des enregistrements par tranche horaire
    Par olive_le_malin dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 19/05/2006, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo