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 :

Pourcentage avec deux chiffres après la virgule


Sujet :

Langage SQL

  1. #1
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut Pourcentage avec deux chiffres après la virgule
    Bonjour

    J'ai fais une requête pour calculer un pourcentage. le problème c'est qu'elle me renvoie un résultat arrondi (ex : 80 ou lieu de 80.034564...). Je voudrais qu'elle me renvoie un résultat arrondi deux chiffres après la virgule mais je ne sais pas comment faire.
    Voilà ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  ((select count(*) from TABTRAV WHERE TYPELIASSE = 1) * 100 / (SELECT count(*) FROM TABTRAV)) AS POURCENT
    Quelqu'un a une idée ?

    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Euh elle marche ta requête là, mm sans l'opérateur sum de plus pour pouvoir arrondir à deux chiffre aprés la virgule il existe la fonction round(expression, chiffre) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT round( SUM((select count(*) from TABTRAV WHERE TYPELIASSE = 1) * 100 / (SELECT count(*) FROM TABTRAV)), 2) AS POURCENT

  3. #3
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    ta requête ne fonctionne pas chez moi (SQL SERVER)

    j'ai modifié ma requête pour obtenir un résultat à virgule mais la fonction ROUND déconne à plein tube !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ROUND(CONVERT(float,(select count(*) from TABTRAV WHERE TYPELIASSE = 1)) * 100 /CONVERT(float,(SELECT count(*) FROM TABTRAV)),2,1) AS POURCENT
    me renvoie : 80.030000000000001 !!!

    Pourquoi j'ai un 1 qui traine à la fin ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Ah pas grave la fonction round c'était juste pour arrondir aprés la virgule mais tu peux aussi utiliser Format(nombre, "0.00%") == > attention ton nombre doit être compris entre 0 et 1 comme c'est un pourcentage ta requête devient donc :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT FORMAT(CONVERT(float,(select count(*) from TABTRAV WHERE TYPELIASSE = 1))  /CONVERT(float,(SELECT count(*) FROM TABTRAV)), "0.00%") AS POURCENT

  5. #5
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    ben il veut pas de la fonction FORMAT, ca existe pas d'après l'analyseur de requête sous SQL SERVER

  6. #6
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Points : 358
    Points
    358
    Par défaut
    Salut

    Essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  convert(float,((select count(*) from TABTRAV WHERE TYPELIASSE = 1) * 100 / (SELECT count(*) FROM TABTRAV)),2) AS POURCENT
    OS:Win 2000 Pro, WIN XP
    SGBD: MS Sql Server, Oracle
    Environnement: VS.NET 2002, JBuilder
    Web: www.ndestudents.com

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Bah wé tu peux utiliser CONVERT( Sum(xxxx), decimal(10,2))

    car en cherchant un peu(sur le net) g trouvé ça (euh c'est à ce qu'il paraît dans le msdn) :

    Précision, échelle et longueur

    La précision est le nombre de chiffres qui composent un nombre. L'échelle est le nombre de chiffres à droite du point décimal (notre virgule) dans un nombre. Par exemple, le nombre 123,45 a une précision de 5 et une échelle de 2.

    La précision maximum par défaut des types de données numeric et decimal est 38. Dans les versions précédentes de SQL Server, la valeur maximum par défaut était de 28.

    La longueur pour un type de données numérique est le nombre d'octets utilisés pour stocker le nombre. La longueur d'une chaîne de caractères ou d'un type de données Unicode est le nombre de caractères. La longueur des types de données binary, varbinary et image est le nombre d'octets. Par exemple, un type de données int peut contenir 10 chiffres, il est stocké sur 4 octets et il n'accepte pas le point décimal. Le type de données int a une précision de 10, une longueur de 4, et une échelle de 0.

    etc.... consulte msdn

  8. #8
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    merci, j'ai réussi à obtenir ce que je voulais en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CONVERT(decimal(10,2),CONVERT(float,(select count(*) from TABTRAV WHERE TYPELIASSE = 1)) * 100 / CONVERT(float,(SELECT count(*) FROM TABTRAV))) AS POURCENT

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

Discussions similaires

  1. [Débutant] afficher valeurs numériques avec deux chiffres après la virgule
    Par bahja29 dans le forum MATLAB
    Réponses: 4
    Dernier message: 07/04/2009, 11h48
  2. Double avec deux chiffres après la virgule
    Par Viscapon dans le forum Débuter avec Java
    Réponses: 32
    Dernier message: 14/02/2009, 17h50
  3. Réponses: 1
    Dernier message: 21/04/2008, 16h00
  4. Deux chiffre apres la virgule
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/08/2006, 15h37
  5. Réponses: 3
    Dernier message: 10/02/2006, 15h31

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