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 :

Regroupement par période


Sujet :

Langage SQL

  1. #1
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut Regroupement par période
    Bonjour,

    Dans une table, j'ai des enregistrements qui spécifie une date.
    Je cherche à faire une requête qui regroupe par période mais cette période n'est pas classique (année, mois...).
    La période est du 1er juin au 31 mai.
    J'aimerais qu'il découpe tout seul, c'est-à-dire, je ne veux pas avoir à préciser 2012, 2013, 2014...

    Au pire, on peut utiliser un pré-regroupement par mois.

    Quelqu'un connaît-il la requête adéquate?

    Merci de votre attention
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Prenez votre date, enlevez-y cinq mois, et arrondissez à l'année.

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Bonjour,

    Moi j'utilise une table saison que je redéfinis toutes les années.
    saison date_deb date_fin
    2013-2014 2013-09-09 00:00:00.0 2014-09-08 23:59:59.0

    Je fais une jointure à la table associée aa.date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT JOIN saisons s ON (aa.date) BETWEEN s.date_deb AND s.date_fin
    Ensuite :
    Sinon si ta saison est fixe, tu peux t'amuser à créer un champ de ce type:
    Imaginons que ta date fixe est datetime_saison
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datetime_saison = new Datetime(config.getSaison());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CASE WHEN MONTH(aa.date) > "+(datetime_saison.getMois())+" THEN CONCAT(YEAR(aa.date), '-', YEAR(aa.date) + 1) 
    WHEN MONTH(aa.date) = "+(datetime_saison.getMois())+" AND DAY(aa.date)>= "+(datetime_saison.getJour_du_mois())+" THEN CONCAT(YEAR(aa.date), '-', YEAR(aa.date) + 1) 
    ELSE CONCAT(YEAR(aa.date) - 1, '-', YEAR(aa.date)) END AS Saison
    Ensuite
    À toi de voir

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Merci pour vos réponses.

    J'ai opté pour la soustraction avec la formule finalement classique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    year(from_unixtime(temps) - interval 5 month)
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

Discussions similaires

  1. Regrouper date par période (supérieure à une année)
    Par Ramboleretour dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/04/2014, 08h21
  2. Echantillonnage par période élémentaire
    Par Invité dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/06/2005, 13h16
  3. Réponses: 5
    Dernier message: 29/09/2004, 11h05
  4. [DB2]Requête regroupement par intervals
    Par sm dans le forum DB2
    Réponses: 8
    Dernier message: 01/09/2004, 17h19
  5. Regroupement par mois
    Par fplanglois dans le forum SQL
    Réponses: 7
    Dernier message: 29/07/2003, 16h32

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