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 :

Calcul d'un pourcentage en SQL


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Calcul d'un pourcentage en SQL
    Bonjour à tous,

    j'ai un problème dont je devine que la solution est très simple, mais comme ca me prend la tête depuis un moment je sollicite votre aide..

    en gros, j'ai une table VENTES,(qui fait jointure entre 2 tables VENDEURS et VOITURES) definie comme suit:

    Ventes (Numvend, Numvoiture, Prixvente)

    et j'aimerais pour chaque vendeur pouvoir afficher le pourcentage de ses ventes personnels sur le montant total des ventes

    Est-t-il possible de realiser ca en une seule requete?

    Ou alors par l'utilisation d'une vue?

    Je suis preneur des 2 solutions, histoire d'avoir une idée des 2 facons de procéder

    Merci par avance à ceux qui prendront un peu de temps pour mon probleme

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    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 115
    Points : 28 493
    Points
    28 493
    Par défaut
    Tu ne précises pas quel SGBD tu utilises...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT    Vnd.NumVend
        ,    SUM(Vnd.PrixVente)    / Tot.PrixVente
    FROM    Ventes    AS Vnd
        CROSS JOIN
            (    SELECT    SUM(PrixVente)    AS PrixVente
                FROM    Ventes
            )    AS Tot
    GROUP BY Vnd.NumVend
    Autre solution utilisant les fonctions de regroupement analytiques, si tu SGBD les prend en charge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT    DISTINCT NumVend
        ,    SUM(PrixVente)    OVER (PARTITION BY NumVend) / SUM(PrixVente) OVER()
    FROM    Ventes

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Désolé pour l'oubli et merci de ta réponse al1, mon SGBD est Access 2000

    Je ne vais pas te cacher que je suis plutôt novice en SQL.. Je ne connaissais même pas l'existence du CROSS JOIN.

    Est-il possible de réaliser une requête amenant au même résultat mais sans ce type de jointure?

    Et pour ce qui est de créer une vue pour faciliter le calcul de pourcentages, comment s'y prendre?

    Merci.

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonsoir,

    Quel environnement global.... Access seul ou liaison avec un autre SGBD de type Oracle ou SQL server ?


  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    Bonsoir,

    Quel environnement global.... Access seul ou liaison avec un autre SGBD de type Oracle ou SQL server ?


    Bonsoir !

    Access seul

    Merci

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    j'ai tenté comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT V.Numvend AS Vendeur, V.PrixVente/(SELECT SUM(PrixVente) FROM VENTES)*100 AS POURCENTAGE
    FROM VENTES V
    et j'obtiens bien le pourcentage de ventes pour les vendeurs, le probleme etant que le resultat apparait comme suit

    VENDEUR POURCENTAGE
    1 2,24
    1 1,92
    1 2,67
    1 2,78
    1 1,49
    2 2,35
    2 3,1
    2 1,81
    2 2,13
    2 2,78 ....

    et que je n'e parviens pas à grouper le total pour chaque vendeur, j'ai tenté de mettre un GROUP BY V.Numvend mais un message d'erreur apparait..

    une idée? Merci par avance

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    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 115
    Points : 28 493
    Points
    28 493
    Par défaut
    C'est le GROUP BY qui te manque !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT    Vnd.NumVend
        ,    SUM(Vnd.PrixVente) * 100 / Tot.PrixVente
    FROM    Ventes    AS Vnd
        ,   (    SELECT    SUM(PrixVente)    AS PrixVente
                FROM    Ventes
            )    AS Tot
    GROUP BY Vnd.NumVend
    Ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT    Vnd.NumVend
        ,    SUM(Vnd.PrixVente) * 100 / 
            (    SELECT    SUM(PrixVente)    AS PrixVente
                FROM    Ventes
            )
    FROM    Ventes    AS Vnd
    GROUP BY Vnd.NumVend

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci!

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

Discussions similaires

  1. Demande d'aide pour un calcul de pourcentage en SQL
    Par Léo1000 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 15/04/2014, 22h45
  2. Calculs de pourcentages en SQL
    Par grping dans le forum Langage SQL
    Réponses: 12
    Dernier message: 03/11/2009, 12h28
  3. Calcul d'intégrales en PL/SQL
    Par boxsters dans le forum PL/SQL
    Réponses: 2
    Dernier message: 02/05/2007, 10h09
  4. Calcul BD mais dans Requete SQL
    Par forzaxelah dans le forum Bases de données
    Réponses: 5
    Dernier message: 13/05/2006, 21h35
  5. formule de calcul du TRI avec PL/SQL
    Par mongilotti dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 30/07/2005, 21h23

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