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

Langage SQL Discussion :

compter un nbre d'enregistrements par rapport à l'heure


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut compter un nbre d'enregistrements par rapport à l'heure
    Bonjour,

    J'ai quelques soucis avec une requête que je souhaite exécuter.

    J'ai actuellement une table avec un champ "datetime" qui me donne le jour et l'heure de l'enregistrement et un champ "id_produit" qui me donne l'id du produit fabriqué.
    ex:
    Datetime | Id_produit
    |
    02/12/2008 10:12:45 | 1234
    02/12/2008 10:32:18 | 1235
    02/12/2008 11:09:37 | 1236

    En fait, un enregistrement est effectué à chaque production.

    Mon but est de compter le nombre de production par heure et d'obtenir ce résultat:

    heure | nombre
    |
    8* | 0 (*Entre 8h et 9h)
    9 | 0
    10 | 2
    11 | 1
    12 | 0


    Je ne sais pas si cela est possible de le faire en un nombre de requête limité (pour ne pas faire une requête pour chaque heure!)

    Voila comment j'avais commencé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT count(*) FROM T_MATABLE GROUP BY datetime...
    Mais là, je bloque ! Normal, peut-être.

    Pour remédier à ce problème, j'ai créé une table pour y mettre juste les heures afin de pouvoir comparer mais je ne vois pas du tout comment je peux les comparer dans la clause "where" ou alors dans la clause "group by".

    Si vous avez des idées merci de m'en apporter quelques unes... car je sèche!

    J'espère avoir était assez clair mais si vous avez des questions, n'hésitez pas!

    Merci d'avance,
    Franchesko.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Une idée serait de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Une_fonction_de_convertion_en_heure(MON_DATE_TIME) as heure, count(*)
    FROM MATABLE
    group by Une_fonction_de_convertion_en_heure(MON_DATE_TIME)
    Le problème majeur est que Une_fonction_de_convertion_en_heure dépend du SGBD que tu n'a pas précisé .
    Donc je ne serais pas plus précise.
    Va voir éventuellement cela pourra t'aider à trouver la fonction qui te convient

    A+
    Soazig

  3. #3
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Sans connaitre ton SGBD, c'est pas évident.

    J'avais fait un truc comme ça sous Access :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    mysql = ""
    mysql = mysql & "SELECT Dates, "
    mysql = mysql & "Count(IIf([Heures] Between #00:00:00# And #12:00:00#,[Heures])) AS [Matin], "
    mysql = mysql & "Count(IIf([Heures] Between #12:00:01# And #18:00:00#,[Heures])) AS [Après midi], "
    mysql = mysql & "Count(IIf([Heures] Between #18:00:01# And #23:59:59#,[Heures])) AS [Soirée], "
    mysql = mysql & "Count([Heures]) As [Total] "
    mysql = mysql & "From MATABLE "
    mysql = mysql & "GROUP BY Dates "

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Merci de vos réponses.

    En effet, j'ai oublié de vous dire que je travaille sur MS SQL Server.

    Vos solutions me semblent bien mais je ne connais pas la fonction qui me permet d'extraire l'heure d'un champ "datetime" ou, s'il le faut, d'un champ "nchar"

    Il ne me semble pas que la fonction "convert" ne donne pas que l'heure et je ne sais pas utiliser des expresseions régulières pour aller rechercher l'heure dans un champ comme celui-ci : '02/12/2008 08:45:58'

    Je vais continuer à y réfléchir et je vous tiens au courant de mon avancement.
    D'ici là, si vous avez des idées merci de me les apporter!

    Encore merci,
    Franchesko62.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Au fait,

    Je pense qu'il est possible de demander par une expression régulière que je veux les 2 chiffres après l'espace pour obtenir l'heure mais je ne sais pas comment faire!

    Je continue de me renseigner, cependant si vous avez une idée merci de la partager car je patauge avec les expressions régulières et je ne trouve pas de beaucoup de cours dessus.

    Franchesko62

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour es-tu allé http://sqlpro.developpez.com/cours/s...onctions/#L1.7
    comme je te l'avais conseillé d'après ce tableau il est possible d'utiliser la fonction hour.
    A+
    Soazig

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Excuse moi Soazig,

    J'étais passé directement à l'autre post en oubliant que tu avais laissé un lien.
    Ce lien est super et ta réponse est excelente.

    Merci encore.

    Voici la solution que j'ai adopté pour mon problème sur SQL Server

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DATEPART(hh,datetime) as Heure, count(*)
               FROM Production
                        GROUP BY DATEPART(hh,datetime)
    Bonne continuation,
    Franchesko62.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/06/2008, 12h34
  2. Compter le nombre d'enregistrements par minute
    Par Kosti dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/06/2008, 15h58
  3. Réponses: 8
    Dernier message: 23/11/2007, 17h46
  4. Afficher les enregistrements par rapport à un caractère saisi
    Par issam47 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/06/2007, 16h16
  5. [CR] Compter le nbre d'enregistrement par page.
    Par sylviefrfr dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 21/02/2006, 10h21

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