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 :

Faire la somme en retirant les doublons


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut Faire la somme en retirant les doublons
    Bonjour à tous.
    Je tente d'obtenir la volumétrie d'un serveur à une date donnée en additionnant les valeurs d'une colonne mais j'ai des lignes en double.
    J'aimerais extraire ces doublons car ça me fausse le résultat.

    Voici un extrait de mon fichier en pièce jointe

    Ma mauvais requête (qui n'élimine pas les doublons) est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select DSI_FILESYSTEM_SERVEUR, SUM(DSI_FILESYSTEM_VGSIZE) as VOLUMETRIE from TF_DSI_FILESYSTEM  where DSI_FILESYSTEM_DTEXTRACT ='2023-03-29' group by DSI_FILESYSTEM_SERVEUR
    Les doublons que je ne souhaite pas sont dans la colonne DSI_FILESYSTEM_VGNAME

    j'ai tenté la requête suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select SUM(DSI_FILESYSTEM_VGSIZE) as VOLUMETRIE from (select distinct DSI_FILESYSTEM_SERVEUR, DSI_FILESYSTEM_VGSIZE from TF_DSI_FILESYSTEM where DSI_FILESYSTEM_DTEXTRACT ='2023-03-29' group by DSI_FILESYSTEM_SERVEUR ) t
    mais j'ai l'erreur suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Error: ERROR:  Attribute TF_DSI_FILESYSTEM.DSI_FILESYSTEM_VGSIZE must be GROUPed or used in an aggregate function
    merci d'avance pour votre aide
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Bonjour,

    Je ne pense pas que tu puisses faire un distinct sur ces colonnes là car tu pourrais avoir des tailles identiques sur différents volumes.
    Il faut trouver les colonnes discriminantes (on ne les voit pas toutes dans ta capture) et faire le distinct sur ces dernières.

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Bonjour,
    il ne peut y avoir qu'un seul DSI_FILESYSTEM_VGNAME. Mon but est donc d'obtenir une ligne par DSI_FILESYSTEM_VGNAME et ensuite additionner leur taille.

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    il ne peut y avoir qu'un seul DSI_FILESYSTEM_VGNAME. Mon but est donc d'obtenir une ligne par DSI_FILESYSTEM_VGNAME et ensuite additionner leur taille.
    Il y a tellement de manières d'interpréter cette phrase

    On récupère les couples (DSI_FILESYSTEM_VGNAME, DSI_FILESYSTEM_VGSIZE) uniques
    et on additionne leur taille :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    WITH dataset AS (
        SELECT DISTINCT DSI_FILESYSTEM_VGNAME, DSI_FILESYSTEM_VGSIZE
        FROM TF_DSI_FILESYSTEM 
    )
    SELECT ALL SUM(DSI_FILESYSTEM_VGSIZE)
    FROM dataset;

    Si ce n'est pas bon donne-nous un jeu de données exploitable et le résultat attendu.

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Bonjour Séb.
    Merci pour ta réponse.
    C'est presque ça.
    Cette requête me donne la somme de tous les serveurs mais moi j'aimerais cela par serveur, du coup avec un ligne par serveur qui est la colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DSI_FILESYSTEM_SERVEUR

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Et bien histoire de ne pas jouer aux devinettes éternellement je réitère :

    Si ce n'est pas bon donne-nous un jeu de données exploitable et le résultat attendu.

Discussions similaires

  1. [MySQL] Retirer les doublons lors de l'affichage en php
    Par kakashi05 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 12/08/2011, 17h21
  2. [AC-97] Requête qui retire les doublons en fonctions de 3 clefs primaires.
    Par Jazz_ dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/10/2010, 10h26
  3. [XL-2003] faire une somme que sur les colonnes visibles
    Par mimilll dans le forum Excel
    Réponses: 21
    Dernier message: 27/08/2009, 12h10
  4. Retirer les doublons de dates
    Par Mister Nono dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 22/10/2007, 11h26
  5. Retirer les doublons du résultat
    Par Mister Nono dans le forum Requêtes
    Réponses: 1
    Dernier message: 08/10/2006, 12h47

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