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

Requêtes et SQL. Discussion :

pourcentage de variation d'une valeur en fonction du temps


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Août 2007
    Messages : 25
    Points : 21
    Points
    21
    Par défaut [résolu] pourcentage de variation d'une valeur en fonction du temps
    edit: Désolé, je crois que je me suis trompé de rubrique...

    Bonjour.
    Je tiens à préciser que j'ai épluché les différents tutoriaux sans trouver de solution à mon problème (peut être n'ai je pas assez regardé).

    En fait, je dois faire une version d'un calcul qui était effectué avant sous Excel (cadeau empoisonné). Donc sous Excel, c'est hyper simple, par contre sous Access, je ne sais pas comment le formaliser.

    Explication du problème:
    j'ai un nombre d'entrées par jour.
    en utilisant la fonction PartDate("M";date) et une somme sur mon nombre d'entrées, j'obtiens mon nombre d'entrées par semaine.

    On me demande maintenant de calculer le pourcentage d'évolution du chiffre d'entrées par semaine d'une année sur l'autre. Et là je bloque.

    Mes données sont présentées sous la forme d'un tableau croisé dynamique avec en abscisses l'année, en ordonnées le numéro de semaine et dans les cases, mon compte d'entrées.
    Je suis tombé par hasard sur la fonction "créer un champ de détail calculé" dans dans le menu tableaux croisés dynamiques-> totaux et champs calculés.
    Access me créé une nouvelle colonne et ouvre une fenêtre propriété que je dois pouvoir remplir avec une formule.
    Mais comment lui faire comprendre que je veux le pourcentage d'évolution entre la colonne 1 (semaine 1 année 2001) et la colonne 2 (semaine 1 année 2002) et ainsi de suite?



    Merci par avance pour votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Août 2007
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    Hum. Mon problème serait-il plus compliqué que ce que je ne pensais ou les fêtes de noël auraient une influence sur le forum?

    Bon, je continue à chercher... et je vous souhaite à tous un joyeux noël

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut orwen,

    cela me fait penser à la discution ici.

    mais ton pb devrais être plus "simple".
    poste ton sql pour plus de clarté, merci.

    ps: le père noel aura surement du retard pour ce pli...
    bonne fêtes


  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Août 2007
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    Bonjour Vodiem et merci pour l'aide que tu pourrais m'apporter.

    Comme tu me l'as demandé, voici la requête SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM First([@moyenne_frequentation_parAn_ParSem].moyenne) AS PremierDemoyenne
    SELECT [@moyenne_frequentation_parAn_ParSem].semaine
    FROM [@moyenne_frequentation_parAn_ParSem]
    GROUP BY [@moyenne_frequentation_parAn_ParSem].semaine
    PIVOT [@moyenne_frequentation_parAn_ParSem].année;

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    alimente ton tableau croisé dynamique avec cette requete:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT
       t1.semaine,
       sum(t1.moyenne) AS montant,
       nz(sum(t1.moyenne),0) - nz((select sum(t2.moyenne) from[@moyenne_frequentation_parAn_ParSem] as t2 where (t2.semaine=t1.semaine) and (t2.année=t1.année-1) group by t2.semaine, t2.année),0) AS evolution,
       année
    FROM
       [@moyenne_frequentation_parAn_ParSem] AS t1 GROUP BY t1.semaine, t1.année

    je t'ai mis l'évolution en écart de valeur car je ne sais pas quelle formule tu souhaites pour le pourcentage.
    je pense que tu devrais pouvoir te débrouiller avec ca?


  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Août 2007
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    J'ai pris quelques jours de vacances donc je ne pourrais vérifier cette solution que lundi mais quoi qu'il en soit merci pour la rapidité de ta réponse vodiem.

    Par ailleurs, je vais essayer de décortiquer ta réponse car je n'aime pas me sentir impuissant face à une requête SQL.

    Bonne fête de Noël

  7. #7
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    en fait, j'ai interprété ce que tu voulais.
    je n'ai pas choisi first() car s'il y a plusieurs valeurs je pense qu'il est plus correcte de prendre la somme, mais bien sur selon le cas cela n'est pas forcement approprié.
    pour le pourcentage tout dépend de ce que tu veux mettre en avant.
    nouveau/origine
    origine/nouveau
    (nouveau-origine)/origine
    ...
    la requete est simple j'ai utilisé une sous requete pour récupérer la valeur de la semaine de l'année précédente, je rajoute nz() pour les cas de nullité et il faudrait rajouter format(champ,'0%') éventuellement pour le pourcentage.
    il est possible d'utiliser à la place une fonction de domaine, c'est plus lisible: Dlookup(). cf <F1>

    voilà c'est pas aussi efficace que le viagra mais cela comblera peut être ton impuissance face à la SQL.

    Bonne fête aussi de Noël,

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Août 2007
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    Wouhou merci Vodiem, ta requête fonctionne.
    Elle fait ramer l'ordinateur mais au moins elle me donne un résultat.
    je l'ai modifié afin de la faire correspondre au cas (nouveau-origine)/origine.

    Je ne sais pas si la fonction Dlookup est plus rapide, il faudrait que je fasse un test.

    Merci encore pour ton aide

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour
    J'ai exactement le probleme que vous avez résolu mais je ne trouve pas comment faire !
    Ci dessous le code Sql

    TRANSFORM Avg(NEGOCE.[Prix achat]) AS [MoyenneDePrix achat]
    SELECT NEGOCE.Annee, NEGOCE.Pays
    FROM NEGOCE
    GROUP BY NEGOCE.Annee, NEGOCE.Pays
    ORDER BY NEGOCE.Saison
    PIVOT NEGOCE.Saison;

    J'aimerais calculer le taux de variation de la moyenne de mon prix achat d'une saison à une autre et du même pays (sachant que je ne travaille par forcement avec un meme pays d'une saison a une autre)
    Merci d'avance pour votre aide

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

Discussions similaires

  1. Probleme vba pour renvoyer une valeur en fonction de deux criteres
    Par tarif dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2008, 20h28
  2. Réponses: 3
    Dernier message: 22/03/2008, 12h48
  3. Réponses: 5
    Dernier message: 09/12/2007, 19h17
  4. Réponses: 15
    Dernier message: 02/05/2007, 19h04
  5. Réponses: 4
    Dernier message: 01/06/2006, 15h58

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