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

SQL Oracle Discussion :

Regroupement par semaine


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 80
    Points : 50
    Points
    50
    Par défaut Regroupement par semaine
    Bonjour,

    voici mon souci :

    j'ai une table de la forme :

    GROUPE CLASSE_ACTION CODE_ACTION DATE

    Ce que je souhaite c'est pouvoir comptabiliser par semaine via un group by
    sur GROUPE/CLASSE_ACTION/CODE_ACTION/DATE avec un TO_CHAR(YYYYWW)

    l'inconvénient est que lors de semaines d'inactivité je n'ai pas de données à apparaître.

    Comment faire pour faire apparaître les dates vides ?


    Merci

  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 803
    Points
    30 803
    Par défaut
    Quelle est la requête que tu exécutes actuellement ?
    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
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Pour faire apparaitre des choses inexistantes, il faut les créer.. Donc avoir une table de jointure pour toutes les semaines.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    Voici ce que je fais :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    SELECT
      GRP,
      GROUPE,
      CLASSE_ACTION,
      CODE_ACTION,
      ANNEE, 
      semaine,
      Count(*)
    FROM
      (SELECT
        To_Number(To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 14,'YYYY')) ANNEE,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 14,'WW') semaine,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 14,'YYYYWW') GRP
      FROM
        DUAL
      UNION
      SELECT
        To_Number(To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 21,'YYYY')) ANNEE,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 21,'WW') semaine,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 21,'YYYYWW') GRP
      FROM
        DUAL
      UNION
      SELECT
        To_Number(To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 28,'YYYY')) ANNEE,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 28,'WW') semaine,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 28,'YYYYWW')
      FROM
        DUAL
      UNION
      SELECT
        To_Number(To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 35,'YYYY')) ANNEE,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 35,'WW') semaine,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 35,'YYYYWW')
      FROM
        DUAL
      UNION
      SELECT
        To_Number(To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 42,'YYYY')) ANNEE,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 42,'WW') semaine,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 42,'YYYYWW') GRP
      FROM
        DUAL
      UNION
      SELECT
        To_Number(To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 49,'YYYY')) ANNEE,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 49,'WW') semaine,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 49,'YYYYWW') GRP
      FROM
        DUAL
      UNION
      SELECT
        To_Number(To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 56,'YYYY')) ANNEE,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 56,'WW') semaine,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 56,'YYYYWW') GRP
      FROM
        DUAL
      UNION
      SELECT
        To_Number(To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 63,'YYYY')) ANNEE,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 63,'WW') semaine,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 63,'YYYYWW') GRP
      FROM
        DUAL
      UNION
      SELECT
        To_Number(To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 70,'YYYY')) ANNEE,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 70,'WW') semaine,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 70,'YYYYWW') GRP
      FROM
        DUAL
      UNION
      SELECT
        To_Number(To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 77,'YYYY')) ANNEE,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 77,'WW') semaine,
        To_Char(Trunc(NEXT_DAY(SYSDATE, TO_CHAR(TO_DATE('02-01-2012', 'DD-MM-YYYY'),'DAY')) ) - 77,'YYYYWW') GRP
      FROM
        DUAL) Tab1,
      ACTIVITE Tab2 
    WHERE
      Tab1.GRP = TO_CHAR(Tab2.DATE,'YYYYWW')(+)
    GROUP BY
    	GROUPE, CLASSE_ACTION, CODE_ACTION, GRP, ANNEE, semaine
    ORDER BY
      Tab1.GRP ;
    Merci

  5. #5
    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
    Personnellement, je ne suis vraiment pas fan des semaines YYYYWW.
    Je leur préfère mille fois leur contrepartie ISO : IYYYIW.

    Le hic des semaines WW, c'est que vous avez des semaines qui ne durent que quelques jours, si on regarde fin 2009 / début 2010 :
    JOUR       JOUR_SEMAINE  SEMAINE    SEMAINE_ISO
    ---------- ------------- ---------- -----------
    2009-12-21 Lundi         200951     200952     
    2009-12-22 Mardi         200951     200952     
    2009-12-23 Mercredi      200951     200952     
    2009-12-24 Jeudi         200952     200952     
    2009-12-25 Vendredi      200952     200952     
    2009-12-26 Samedi        200952     200952     
    2009-12-27 Dimanche      200952     200952     
    2009-12-28 Lundi         200952     200953     
    2009-12-29 Mardi         200952     200953     
    2009-12-30 Mercredi      200952     200953     
    2009-12-31 Jeudi         200953     200953     
    2010-01-01 Vendredi      201001     200953     
    2010-01-02 Samedi        201001     200953     
    2010-01-03 Dimanche      201001     200953     
    2010-01-04 Lundi         201001     201001     
    2010-01-05 Mardi         201001     201001     
    2010-01-06 Mercredi      201001     201001     
    2010-01-07 Jeudi         201001     201001     
    2010-01-08 Vendredi      201002     201001     
    2010-01-09 Samedi        201002     201001     
    2010-01-10 Dimanche      201002     201001

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 80
    Points : 50
    Points
    50
    Par défaut
    Merci,

    en effet l'utilisation ISO est plus pratique.

    J'ai généré les infos manquantes et jointure après.

    OK

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

Discussions similaires

  1. [9.2] Regroupement par semaine
    Par marc73450 dans le forum Requêtes
    Réponses: 8
    Dernier message: 09/04/2013, 08h16
  2. Requête regroupement par semaine
    Par stade13 dans le forum Requêtes
    Réponses: 5
    Dernier message: 05/04/2013, 18h55
  3. [AC-2003] Regroupement par semaine
    Par DavidT62 dans le forum Access
    Réponses: 1
    Dernier message: 03/11/2011, 20h26
  4. [Access 2003] regroupement par semaine
    Par bouts dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/10/2008, 16h44
  5. Requette sur date avec regroupement par semaine
    Par bob75000 dans le forum Access
    Réponses: 6
    Dernier message: 17/07/2006, 15h39

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