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

Bases de données Delphi Discussion :

Comment faire cette requête ?


Sujet :

Bases de données Delphi

  1. #1
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut Comment faire cette requête ?
    Bonjour

    j ai une table dedans, 2 colonnes
    Date
    Montant

    je voudrais, faire un tableau des 12 derniers mois avec pour chaque mois le total du mois

    partant de ce mois ci : octobre
    je voudrais avoir octobre, sept, aout, juillet etc... et le cumul pour chacun

    comment faire cette requete ?
    merci
    Philippe Cazaux-Moutou
    C#
    Delphi
    Windev

    Guadeloupe

    www.ancestrologie.net/fr

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Tu crée une table avec 4 colonnes une première avec l'année , une seconde avec le mois, une troisième avec la date de début du mois, une quatrième avec la date de début du mois suivant.
    Tu lies cette table avec ta table dans ta requête tu met le filtre et les agrégations dans la première table.

  3. #3
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    on doit bien pouvoir faire ca sans creer une table, non ?
    Philippe Cazaux-Moutou
    C#
    Delphi
    Windev

    Guadeloupe

    www.ancestrologie.net/fr

  4. #4
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Le plus simple est de ne pas s'occuper de filtrer la date comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT EXTRACT (YEAR FROM date) annee,EXTRACT (MONTH FROM date) mois, SUM ( Montant)
    FROM table
    GROUP BY annee,mois
    ORDER BY annee DESC,mois DESC
    ROWS 12

    Sur serveur Firebird 2.
    Si vous êtes libre, choisissez le Logiciel Libre.

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par TryExceptEnd Voir le message
    Le plus simple est de ne pas s'occuper de filtrer la date comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT EXTRACT (YEAR FROM date) annee,EXTRACT (MONTH FROM date) mois, SUM ( Montant)
    FROM table
    GROUP BY annee,mois
    ORDER BY annee DESC,mois DESC
    ROWS 12

    Sur serveur Firebird 2.
    Version plus courte (moins de caractères à tapper )

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT YEAR(date) annee,MONTH(date) mois, SUM ( Montant)
    FROM table
    GROUP BY annee,mois
    ORDER BY annee DESC,mois DESC
    ROWS 12
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT YEAR(date) annee,MONTH(date) mois, SUM ( Montant)
    FROM table
    GROUP BY annee,mois
    ORDER BY annee DESC,mois DESC
    ROWS 12
    Pour info,
    Sous Firebird les fonctions (intégrées) Year, Month, Day,... n'existent pas. C'est bien Extract, qu'il faut utiliser.

    @+ Claudius.

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Pour info,
    Sous Firebird les fonctions (intégrées) Year, Month, Day,... n'existent pas. C'est bien Extract, qu'il faut utiliser.

    @+ Claudius.
    Pourtant c'est des fonctions de base du SQL 92 .... (A jetter les bases de données pas SQL 92 )
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Pour info,
    Sous Firebird les fonctions (intégrées) Year, Month, Day,... n'existent pas. C'est bien Extract, qu'il faut utiliser.

    @+ Claudius.
    Merci Cl@udius pour l'info
    je ne le savais pas, j'ai pris habitude d'utiliser ces fonctions avec SQL Server alors comme je me suis mis a FireBird je n'est pas eu a les utiliser encore.

  10. #10
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Pourtant c'est des fonctions de base du SQL 92 ....
    Tu as raison , mais il ne faut oublier que Firebird hérite d'Interbase v6 qui ne suivait pas vraiment la norme SQL2.
    Une part du travail de l'équipe Firebird est d'ailleurs de coller de plus en plus à la norme SQL 2 et 3.

    [edit]
    Citation Envoyé par Aityahia
    Merci Cl@udius pour l'info
    Y a pas de quoi !
    [/edit]

    @+ Claudius

  11. #11
    Membre habitué
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Points : 149
    Points
    149
    Par défaut
    Bonjour,
    Moi j'ai preque le même type de problème :
    J'ai dans ma table les champs suivants

    n_serie : Entier
    resultat : Booléen
    date_heure : datetime
    Je veux connaitre le nombre de tous les enregistrements dont le "resultat" est vrai pendant les 8 dernières heures et je veux que ces résultats soient regroupés heure par heure
    cad de 8-9h , 9-10h ... par exemple.


    Merci

  12. #12
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Fait rapidement, et non tester

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Select Date(date_heure) as Ladate, Hour(date_heure) as heure, count(*) as Total from latable
    where resultat = true and (date_heure >= :PHeure)
    Group by 1,2
    Order by 1,2

    Avec PHeure qui est un paramètre indiquant l'heure de début de la recherche (donc Jours - 8h à mettre dedans)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

Discussions similaires

  1. Comment faire cette requête ?
    Par yacine.dev dans le forum Hibernate
    Réponses: 1
    Dernier message: 18/06/2010, 12h21
  2. Comment faire ma requête SELECT ?
    Par MaTHieU_ dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/07/2006, 16h23
  3. Comment faire cette vue ?
    Par jibe74 dans le forum SQL
    Réponses: 3
    Dernier message: 21/10/2005, 16h30
  4. [SQL] Comment faire ma requête
    Par kaiserazo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/05/2005, 10h39

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