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

PostgreSQL Discussion :

Evaluer le remplissage d'une table


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Par défaut Evaluer le remplissage d'une table
    Bonjour,
    Nouveau en tant que posteur mais je suis pas mal le forum qui est une véritable mine.
    Je souhaiterais faire un état des lieux via SQL et PHP d'une table, j'ai cherché sur internet mais seulement trouvé pour MySQL ou Oracle.

    Le résultat que je souhaiterais obtenir

    ---------------Col1---Col2---Col3
    Remplissage----100%--90%---30%

    Pour cela, je cherche un équivalent sous Postgrès de la fonction ISNULL sous MySQL, qui permet de compter le nombre de NULL dans une colonne : il suffit ensuite de connaitre nombre de lignes pour avoir le taux de remplissage

    Peut-être existe-t-il un moyen d'avoir directement ce taux de remplissage?
    Ou sinon connaissez-vous un équivalent à ISNULL ou une méthode détournée?

    Merci par avance de l'aide que vous pourrez m'apporter !!!!

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,


    google : postgresql isnull

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Par défaut
    La seule réponse que j'ai pu trouver sur google et "utiliser la fonction COALESCE" et j'avoue que çà correspond pas vraiment à ce que je veux ...

    "It functions much like ISNULL, although provides more functionality. Coalesce will return the first non null value in the list."
    --> Et quand j'essaye de l'appliquer, je vois pas la différence entre
    SELECT COALESCE(champ, NULL) from table;
    et
    SELECT champ from table;

    Bon après je suis débutant en SQL donc peut-être que je vois juste pas le lien entre COALESCE et ce que je veux faire...

    Un pti coup de pouce?

  4. #4
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Bonjour,

    Vous voulez, si j'ai bien compris pour chaque colonne savoir quel est le % de valeurs non nulles... (Je ne vous demande pas pourquoi vous en avez besoin parce que ce n'est pas le sujet, mais je vous dis quand même que c'est a priori une information totalement inintéressante d'un point de vue de DBA...)

    Il faut donc que vous comptiez toutes les fois où la valeur est non nulle et que vous divisiez par le nombre de lignes. Un truc de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT (nbTot-nbnulcol1)/nbTot AS remplissageCol1,
    (nbTot-nbnulcol2)/nbTot AS remplissageCol2,
    (nbTot-nbnulcol3)/nbTot AS remplissageCol3
    FROM
    (
    SELECT COUNT(*) AS nbTot,
    SUM(COALESCE(col1,1)) as nbnulcol1,
    SUM(COALESCE(col2,1)) as nbnulcol2,
    SUM(COALESCE(col3,1)) as nbnulcol3
    FROM maTable t
    )
    Cordialement,

    Arkhena

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Si au contraire, il l'était. (c'était un lien vers l'explication de comment marche coalesce)

    Sinon pour continuer sur la même voie on peut utiliser plusieurs fonction ensemble.

    Par exemple sum(coalesce(...)) etc.

    N'oubliez pas la sctructure case / when qui sera, je penses, adaptée pour avoir votre résultat en 1 seul coup.

  6. #6
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Citation Envoyé par punkoff Voir le message
    N'oubliez pas la sctructure case / when qui sera, je penses, adaptée pour avoir votre résultat en 1 seul coup.
    Effectivement, ce sera plus élégant

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Par défaut
    Merci bien à vous deux !

    J'étais parti sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  SUM(CASE WHEN col1 IS NOT NULL THEN 1 else 0 END) AS nbcol1,
           SUM(CASE WHEN col2 IS NOT NULL THEN 1 else 0 END) AS nbcol2,
    (...)
    FROM table
    afin d'avoir le nombre de valeurs non nulles. Je pense pour voir m'en sortir avec vos conseils, MERCI !

    Cordialement,

    SergentPepper

    PS : pour le taux de remplissage, la BDD a déjà quelques années et certains champs demandés par les opérateurs à l'époque n'ont en fait jamais été utilisés, j'essaie de trouver quelles infos sont utilisées et lesquelles le sont moins/pas pour simplifier l'appliweb de saisie.

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

Discussions similaires

  1. [SQL] Création et remplissage d'une table pays
    Par *alexandre* dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 23/05/2007, 09h10
  2. [windev10]optimisation remplissage d'une table
    Par nath-0-0 dans le forum WinDev
    Réponses: 6
    Dernier message: 16/03/2007, 14h34
  3. Remplissage D'une Table
    Par Maria1505 dans le forum Oracle
    Réponses: 2
    Dernier message: 08/11/2006, 12h53
  4. Remplissage D'une Table
    Par Maria1505 dans le forum Oracle
    Réponses: 1
    Dernier message: 08/11/2006, 11h30
  5. [PL/SQL] Boucle de remplissage d'une table.
    Par Maglight dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/12/2005, 16h35

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