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 :

Faire un regroupement par trimestre


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2023
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2023
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Faire un regroupement par trimestre
    Bonjour à tous,

    J'aimerais réaliser un regroupement par trimestre plutot que par mois.
    Voici le code que j'ai réalisé pour le faire par mois déja :

    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
    select 
    CustomerName
    , month(Invoicedate) as Monthdate
     ,sum(SIL.QUANTITY * SIL.UnitPrice) as TotalInvoices
     
    from sales.Orders as SO
    LEFT JOIN Sales.OrderLines AS SOL on SO.OrderID=SOL.OrderID
    LEFT JOIN Sales.Invoices AS SI on SO.OrderID=SI.OrderID
    LEFT JOIN Sales.InvoiceLines as SIL  on SIL.InvoiceID=SI.InvoiceID 
    Left join sales.customers as SC on SO.CUSTOMERID=SC.CustomerID
     
    Where SI.InvoiceID is not null and SOL.StockItemID =SIL.StockItemID 
    and year(Invoicedate) =2013
     
     
    Group by SC.CustomerName, month(Invoicedate)
     
    Order by SC.CustomerName, month(Invoicedate)

    Pourriez-vous m'expliquer le principe svp ?

    Merci

    Romain

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Bonjour,

    Pour calculer le numéro de trimestre à partir du mois, il faut y ajouter 2 et diviser par 3.
    Comme les opérations s'effectuent sur des entiers, le résultat de la division sera un entier ; il n'est pas nécessaire d'extraire la partie entière du résultat de la division.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (EXTRACT(MONTH FROM maDate) + 2) / 3 AS  trimestre
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 138
    Points : 1 918
    Points
    1 918
    Par défaut
    Bonjour,

    Je ne sais pas quelle BDD tu utilises, mais tu dois certainement pouvoir récupérer le trimestre. Dans Oracle par exemple, tu pourras faire TRUNC(invoicedate, 'Q'):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select 
    CustomerName
    , trunc(Invoicedate, 'q') as Monthdate
     ,sum(SIL.QUANTITY * SIL.UnitPrice) as TotalInvoices
    ...
    Group by SC.CustomerName, trunc(Invoicedate, 'q')
    Sinon tu peux faire un petit calcul pour le déterminer.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Et dans SQL Server DATEPART(quarter, Invoicedate)

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2023
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2023
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Merci!
    Merci à tous pour les astuces, j'ai trouvé mon bonheur !

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

Discussions similaires

  1. regroupement par trimestre
    Par cana13 dans le forum Développement
    Réponses: 4
    Dernier message: 18/01/2011, 13h31
  2. [AC-2010] faire un regroupement par tranche d'age sur un état
    Par idiot dans le forum IHM
    Réponses: 7
    Dernier message: 29/09/2010, 11h22
  3. Réponses: 5
    Dernier message: 15/09/2008, 15h06
  4. Réponses: 0
    Dernier message: 29/07/2008, 10h12
  5. Comment faire un regroupement de valeur par VBA?!
    Par athos7776 dans le forum IHM
    Réponses: 3
    Dernier message: 10/07/2007, 17h42

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