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 :

Requête SQL avec division


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 13
    Par défaut Requête SQL avec division
    Bonjour,
    Je solicite votre aide sur ce forum car je suis étudiante en L2 economie-gestion avec une spécialité maths & info. Or c'est la première année que j'utilise ACCESS et j'ai un petit soucis.
    Lors de nos TD je n'ai eu jusqu'à présent aucun problème pour construire mes requêtes mais le prof nous a donné un "devoir maison" (qui compte pour notre partiel) et qui est d'un niveau bien plus élevé que ce que nous avons fait en cours jusqu'à présent.
    Autant dire que j'ai déjà pas mal cogité sur la première question mais je n'y arrive pas... Et c'est assez frustrant c'est donc pour cela que je viens vous demander de l'aide.

    Voici l'énoncé dans sa totalité:

    Le stockage d'informations dans une base permet de satisfaire les deux types d'usages, qu'on peut faire de ces données :

     Un usage opérationnel à travers la gestion de la donnée. Par exemple, enregistrement d'une vente (par ajout d'une nouvelle facture), référencement d'un nouveau client (ajout ou modification de ses coordonnées), mise à jour du stock (mise à jour de la valeur d'un champ, effectuée lors d'inventaires annuels).

     Un usage décisionnel, analyses de tendances, basées sur des statistiques, pour déterminer une stratégie d'entreprise (d'où le terme "décisionnel").
    Vous venez de finir vos études et êtes embauché dans une entreprise de revente de fourniture et de mobilier. Ses principaux clients sont d'autres sociétés. Vous faites partie du service comptabilité-facturation et connaissez Access, outil au travers duquel l'entreprise assure toute sa gestion. Votre maîtrise de l'outil fait converger vers vous les demandes des autres services.
    La base est structurée ainsi :




    Il faut noter que :

     Une facture traduit la vente d'un ou de plusieurs produits.

     Chaque trimestre, les prix de chaque produit varient. Un nouveau barème/catalogue est édité. Le service Marketing met à jour le prix de vente de chaque produit en fonction de l'état du marché et le service Achat met à jour le coût d'achat du produit en fonction des dernières négociations avec ses fournisseurs/fabricants.

     Les dates de barèmes sont consécutives. La date de fin d'un barème est la veille de la date de début du barème suivant. Aucune période ne se chevauche.


    Voici ma question:

    3. Le consultant de "J'Investigue" a fait une première ébauche de son étude de marché, mais souhaite confirmer ses préconisations en poussant l'analyse plus loin. Il constate qu'il peut y avoir beaucoup de clients enregistrés dans la base, mais peut-être peu de factures associées. Il vous demande donc d'affiner l'analyser en calculant un ratio.
     Extraire pour chaque type de société, le ratio Nombre de factures adressées au client sur le nombre de clients. Pour plus de pertinence dans la présentation du résultat, il vous demande de les trier par ordre décroissant.

    Je ne vois pas comment diviser le nombre de client par le nombre de facture qui leur est associé ... Si jamais vous avez des idées surtout n'hésitez pas.

    Merci d'avance et bravo d'avoir eu le courage de lire mon pavé! =)

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 13
    Par défaut
    Me revoila,

    Je viens d'écrire cette requête mais je ne sais pas vraiment si elle marche. Tout ce que je peux confirmer c'est que la syntaxe est bonne puisque ma requête s'éxecute mais il faudrait que je trouve un moyen de vérifier si elle me donne les bons résultats, ce qui risque d'étre compliqué...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT TypeSociété, NbrFacture / Count (RefClient)
    FROM Client INNER JOIN (
     
    SELECT RefClient, Count (IdFacture) AS NbrFacture
    FROM Facture
    GROUP BY RefClient
                                               ) AS RefClient_NbrFacture
    ON (RefClient_NbrFacture.RefClient=Client.IdClient)
    GROUP BY TypeSociété, NbrFacture
    Et voila ma capture d'écran:



    Sachant que j'ai réalisé une requête pour ma question 2 sur laquelle je me suis appuyée:

    2. Une entreprise extérieure, nommée "J'Investigue" a été mandatée par le service Marketing pour faire l'état de saturation du marché de distribution des fournitures et du mobilier d'entreprise. Elle sollicite votre aide pour lui faire un état des lieux de la typologie des clients actuels.  Extraire la liste des types de sociétés et du nombre de clients associés, que vous triez par ordre décroissant selon ce second calcul.

    Ma requête étant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TypeSociété, Count(IdClient) AS Nombre
    FROM Client
    GROUP BY TypeSociété
    ORDER BY TypeSociété DESC
    et donne :



    Mais je viens d'avoir un doute... L'énoncé veut il que je trie par ordre décroissant le type de société ou le nbr de client??... oups

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 421
    Billets dans le blog
    48
    Par défaut
    'core toi,

    dans la question 3, on recherche le nbr moyen de facture par client pour chaque type de société si je comprends bien.

    Une idée serait de faire une première requête qui calcule le nombre de factures par client :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT IdClient, TypeSociete, count(idfacture) as nbrFacture
    FROM Client LEFT JOIN Facture
    ON Client.idClient=Facture.refClient
    GROUP BY idClient, TypeSociete

    Cette requête R1 retourne par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Idclient	TypeSociete	nbrFacture
    1		T1		3
    2		T1		2
    3		T1		0
    4		T2		5
    5		T2		3
    6		T2		0
    En reprenant R1,

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 
    TypeSociete,
    Sum(nbrFacture)/count(*) as ratio
    FROM R1
    GROUP BY TypeSociete

    Soit ratio=5/3 pour T1, et ratio=8/3 pour T2.

    A vérifier tout de même, et il y a surement d'autres manières de faire…

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 13
    Par défaut
    Et bien d'après access il doit y avoir un problème dans la requete... Je ne vois pas lequel mais bon.
    Sinon je comprends parfaitement la première requête R1 mais par contre la deuxième pas vraiment. On sélectionne le type de société, jusque là okay mais après pourquoi tu fais "Sum(nbrFacture)/count(*)" puisque ce qu'on veut c'est le ratio "nbr de factures adréssées au client (donc ce qu'il y a dans la requete R1 en fait)"/"nbr de clients"

    En tous cas merci beaucoup!

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 421
    Billets dans le blog
    48
    Par défaut
    Citation Envoyé par Tifany.Pitel Voir le message
    Et bien d'après access il doit y avoir un problème dans la requete...
    c'est à dire ? Message d'erreur ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Idclient	TypeSociete	nbrFacture
    1		T1		3
    2		T1		2
    3		T1		0
    4		T2		5
    5		T2		3
    6		T2		0
    Citation Envoyé par f-leb
    Soit ratio=5/3 pour T1, et ratio=8/3 pour T2.
    est-ce qu'on est d'accord sur le résultat qu'on doit obtenir ?

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 126
    Billets dans le blog
    131
    Par défaut
    Salut.

    Avant d'aller plus loin, tu devrais examiner la structure de tes tables car il y a, à mon avis, un défaut de conception puisque les catégories de clients servent à l'analyse...

    Tu devrais donc sécuriser la structure des données à ce niveau?

    Vois-tu de quoi je parles?

    Cela étant dit, je trouve que
    Extraire pour chaque type de société, le ratio Nombre de factures adressées au client sur le nombre de clients
    est ambigu.

    Je comprendrais nombre de clients par cat / nombre total de clients et nombre de factures par cat / nombre total de factures, mais je ne vois pas l'analyse qui peut être tirée de l'énoncé tel qu'il est retranscrit ici.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. requête sql avec clause INNER JOIN
    Par new_wave dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/08/2005, 15h47
  2. Requête SQL avec une réponse unique
    Par Glutinus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 16h35
  3. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15
  4. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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