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 :

Création d'un tableau avec interval de 7 jours entre chaque résultat


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Support logiciel
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut Création d'un tableau avec interval de 7 jours entre chaque résultat
    Bonjour,

    J'ai une nouvelle fois besoin de votre aide.
    Je dois mettre en place une requête SQL (sur Mysql) qui remplie un tableau chaque semaine avec différents éléments.
    Ma table contient : Date, Département, Profession, État (du compte), Quantité.

    Si je test ma requête de base :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DATE,STATUT,SUM(NB) FROM RES_STATS
    where DATE like "2017-10-30%"
    and DEPARTEMENT ="13"
    group by STATUT;
    Ma réponse est Ok à l'instant T.

    Je dois remplir un tableau chaque lundi faisant apparaitre en abscisse les dates et en ordonnées les différents états sur une période de 12 semaines.
    Cerise sur le Khebab, une colonne additionnelle faisant la moyenne est demandée aussi.
    Et c'est la que je bloque.

    J'avoue de pas savoir comment faire,, comment construire ma requête.

    Pouvez cous m'aider à construire cette requête ?

    D'avance merci de vos retours et réponses.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 682
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par DavidM13 Voir le message
    Si je test ma requete de base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DATE,STATUT,SUM(NB) FROM RES_STATS
    where DATE like "2017-10-30%"
    and DEPARTEMENT ="13"
    group by STATUT;
    Ma réponse est Ok à l'instant T.
    C'est OK avec MySQL, mais tout autre SGBD aurait rejeté cette requête car votre GROUP BY est incohérent avec les colonnes du SELECT
    MySQL restitue une valeur "au hasard" de la colonne "DATE" pour le critère de groupage
    De plus c'est une mauvaise idée d'utiliser des noms réservés comme "DATE" pour vos colonnes, ca vous contraint à encadrer avec des "`"
    Enfin, si votre colonne "DATE" est de format date, il faut utiliser un between et non pas un LIKE, si par contre c'est une colonne de format CHAR ou VARCHAR, ce qui expliquerait votre LIKE, alors c'est une hérésie en terme de modélisation, qui compromet toute utilisation de fonction de date. A modifier autant que faire se peut !

    Pour répondre à votre question, vu qu'il s'agit uniquement d'un souci de présentation des données et vu que MySQL ne connait pas les fonctions de PIVOT, faites simple : extraction des données à date, et mise en forme du coté application.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Support logiciel
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut
    Merci escartefigue pour cette réponse.

    Malheureusement je me peux pas modifier la base dans sa structure. J'en suis dépendant.

    Je vais regarder comment faire une extraction des données à date, et mise en forme du coté application

    Cdt.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Voici la requête qui devrait donner vos résultats pour les 12 dernières semaines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT `DATE`, STATUT, 
    	SUM(NB) AS Somme,
    	AVG(NB) AS Moyenne
    FROM RES_STATS
    WHERE `DATE` BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 12 WEEK) AND CURRENT_DATE
    GROUP BY `DATE`, STATUT
    ORDER BY `DATE`, STATUT
    Lancez cette requête chaque lundi et vous aurez la base de votre tableau à mettre en forme ensuite avec un programme client.

    Remarquez au passage l'utilisation des apostrophes inversées pour utiliser la colonne mal nommée DATE afin qu'elle ne soit pas confondue avec le mot du langage SQL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [XL-2010] Création d'un tableau avec donné
    Par Latina27 dans le forum Excel
    Réponses: 0
    Dernier message: 09/01/2015, 00h45
  2. Création d'un tableau avec le temps
    Par alexxxxxx dans le forum LabVIEW
    Réponses: 1
    Dernier message: 14/06/2012, 19h57
  3. Création d'un tableau avec VS sous Open Office
    Par klowner dans le forum Visual Studio
    Réponses: 0
    Dernier message: 06/01/2011, 12h32
  4. Création d'un tableau avec texte et nombre
    Par mfontan dans le forum MATLAB
    Réponses: 6
    Dernier message: 02/02/2010, 16h33
  5. [MySQL] Création d'un tableau avec les données d'une base de données
    Par opeo dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/04/2009, 21h29

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