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

  1. #1
    Membre du Club
    Homme Profil pro
    Apprenti ingenieur administrateur systèmes
    Inscrit en
    octobre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti ingenieur administrateur systèmes
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2012
    Messages : 60
    Points : 41
    Points
    41

    Par défaut Opérations Arithmétiques Sql

    Bonjour,

    J'aimerai si c'est possible de faire ce genre d'opérations en SQL?

    J'ai actuellement ces reqûetes :

    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
    SELECT SUM(affeng) FROM
    (
    	SELECT count(a.id)  as affeng
    		FROM affaire a
    		inner JOIN evenement e ON a.id = e.affaire_id and e.type_principal_id = 444
                                                                    AND e.sous_type_id =477
                                                                    AND e.date_creation between  DATE_SUB(NOW(),INTERVAL 1 YEAR) and NOW()
     
    		WHERE
    		a.client_id  in (86261) and a.segment_marche_id != 31
    		UNION ALL
    		SELECT count(a.id)  as affclot
    		FROM affaire a
    		inner JOIN evenement e ON a.id = e.affaire_id and e.type_principal_id = 444
                                                                    AND e.sous_type_id =479
                                                                    AND e.jalon_motif_id =441
                                                                    AND e.date_creation between  DATE_SUB(NOW(),INTERVAL 1 YEAR) and NOW()
     
    		WHERE
    		a.client_id  in (86261) AND a.segment_marche_id != 31
    ) AS tmp;
    et en fait en résultat final j''aimerai pouvoir avoir cette opération : (affeng / affeng + affclot) *100 afin d'avoir un pourcentage est ce possible?

    Cordialement

  2. #2
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 530
    Points : 43 269
    Points
    43 269

    Par défaut

    La formule serait plutot :
    100 * (affeng / (affeng + affclot))

    Sinon cela reviendrais à faire :
    (1 + affclot) *100

    Révisez vos maths....

    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
    SELECT 100.0 * COUNT(a.id) / 
                  (COUNT(a.id) + (SELECT count(a.id) as affclot
                                  FROM   affaire AS a
                                         INNER JOIN evenement AS e 
                                            ON a.id = e.affaire_id 
                                  WHERE  e.type_principal_id = 444 AND
                                         e.sous_type_id =479 AND 
                                         e.jalon_motif_id =441 AND 
                                         e.date_creation BETWEEN DATE_SUB(NOW(),INTERVAL 1 YEAR) 
                                                             AND NOW() AND
                                         a.client_id = 86261 AND 
                                         a.segment_marche_id <> 31)) 
    FROM   affaire as a
           INNER JOIN evenement as e 
              ON a.id = e.affaire_id 
    WHERE  e.type_principal_id = 444 AND 
           e.sous_type_id = 477 AND 
           e.date_creation BETWEEN DATE_SUB(NOW(),INTERVAL 1 YEAR) 
                               AND NOW() AND
           a.client_id  = 86261 AND 
           a.segment_marche_id <> 31;

    pour apprendre la langage SQL :
    Nom : SQL.jpg
Affichages : 16
Taille : 47,4 Ko

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/10/2014, 13h34
  2. Opération arithmétique dans un select
    Par Christophe Charron dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/03/2007, 12h19
  3. Réponses: 5
    Dernier message: 17/06/2006, 13h33
  4. Opération arithmétique de String à Float
    Par Shiryu57 dans le forum Langage
    Réponses: 4
    Dernier message: 13/03/2006, 11h22
  5. [VAL] Opérations arithmétiques
    Par WriteLN dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/05/2005, 10h59

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