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

MySQL Discussion :

ajouter un partie de résultat a un autre.


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Par défaut ajouter un partie de résultat a un autre.
    bonsoir,

    j'ai exécuté la commande sql suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select vendor 
    ,(count(1) )*100/(Select count(id_incident)<div style="margin-left:120px">from incident 
    where open_time between '2015-01-01'and'2015-01-30'
    ) </div>from 
    incident  
    where open_time between '2015-01-01'and'2015-01-30'
    group by upper (vendor) ;
    et voila le résultat :
    Nom : sql.PNG
Affichages : 135
Taille : 3,9 Ko

    mon objectif est d'ajouter la partie "NSN" a la partie "Nokia".
    merci.

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 900
    Par défaut
    Salut nabil.

    Pour commencer, tu as un problème d'arrondi dans tes résultats. Le total doit faire 100%.

    Le mieux est d'utiliser la fonction case. Je suis parti d'une table à l'identique de ton résultat et j'ai procédé ainsi :
    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
    --------------
    select * from incident
    --------------
     
    +---------+---------+
    | Vendor  | Rate    |
    +---------+---------+
    | Alcatel | 13.5447 |
    | Gemini  |  2.8818 |
    | Huawei  | 21.9020 |
    | Nokia   |  2.8818 |
    | NSN     | 49.8559 |
    | Siemens |  8.6455 |
    +---------+---------+
    --------------
    select Vendor, sum(Rate) as Rate
    from (        select case Vendor when 'NSN' then 'Nokia' else Vendor end as Vendor, Rate
                     from incident) as x
    group by vendor
    --------------
     
    +---------+---------+
    | Vendor  | Rate    |
    +---------+---------+
    | Alcatel | 13.5447 |
    | Gemini  |  2.8818 |
    | Huawei  | 21.9020 |
    | Nokia   | 52.7377 |
    | Siemens |  8.6455 |
    +---------+---------+
     
    Appuyez sur une touche pour continuer...
    Tu n'as qu'à mettre ton select un peu compliqué à la place du "from incident".

    @+

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Par défaut
    merci pour votre réponse.
    j'ai suivi vos conseils et j'ai tapé le requete sql suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select Vendor, sum(Rate) as Rate
    from (select case Vendor when 'NSN' then 'Nokia' else Vendor end as Vendor, Rate
              Select vendor ,(count(1) )*100/(Select count(id_incident)from incident where open_time between '2015-01-01'and'2015-01-30') from incident where open_time between '2015-01-01'and'2015-01-30'group by upper (vendor)) as x
    group by vendor;
    Mais, ce message d'erreur m'apparue:
    Error code 1064, SQL state 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from (Select vendor ,(count(1) )*100/(Select count(id_incident)from incident whe' at line 1
    merci d'avance.

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 900
    Par défaut
    Salut Nabil.

    Si l'imbrication des select ne fonctionne pas, vous pouvez passer par une table temporaire.

    Vous avez mal imbriqué vos select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select Vendor, sum(Rate) as Rate
    from (        select case Vendor when 'NSN' then 'Nokia' else Vendor end as Vendor, Rate
                     from (
     
    C est ici que vous insérez votre select
     
    )) as y
    group by vendor
    @+

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Par défaut
    merci pour votre réponse.
    j'ai essayé cette requete mysql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select Vendor, sum(Rate) as Rate
    from (select case Vendor when 'NSN' then 'Nokia' else Vendor end as Vendor, Rate
    from (  Select vendor ,(count(1) )*100/(Select count(id_incident)from incident where open_time between '2015-01-01'and'2015-01-30') as Rate from incident  where open_time between '2015-01-01'and'2015-01-30'group by upper (vendor) 
    )) as y
    group by vendor;
    et ce message d'erreur m'apparue:
    Error code 1248, SQL state 42000: Every derived table must have its own alias.
    merci d'avance.

  6. #6
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 900
    Par défaut
    Every derived table must have its own alias.
    signifie que vous devez nommer chaque table dérivée.

    Donc à la ligne 4, il faut mettre :

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/03/2014, 10h18
  2. Ajout/Suppression d'une liste a l'autre
    Par PeZ dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/03/2006, 14h39
  3. Ajout & modif d'une table vers l'autre
    Par BOTIGUA dans le forum Access
    Réponses: 1
    Dernier message: 17/02/2006, 18h00
  4. Réponses: 2
    Dernier message: 20/07/2005, 12h09
  5. Ajouter un signe avant résultat en fonction du champ
    Par davyd dans le forum Langage SQL
    Réponses: 10
    Dernier message: 10/03/2005, 11h59

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