[RESOLU] Calcul pourcentage colonnes vides

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Calcul pourcentage colonnes vides

Re: Calcul pourcentage colonnes vides

par cris84 » 01 août 2017, 15:22

Bonjour,
super génial, je ne connaissais pas ! :)
Un grand merci pour cette explication au combien détaillée.
Là on sait se que l'on fait =D>

Re: Calcul pourcentage colonnes vides

par @rthur » 01 août 2017, 11:06

Bonjour,

Voici un exemple fonctionnel sur 4 champs :
SELECT id, prenom, nom, 
ROUND(100-(ISNULL(NULLIF(prenom,'')) + ISNULL(NULLIF(nom,'')) + ISNULL(NULLIF(email,'')) + ISNULL(NULLIF(pays,'')))*100/4) AS taux_de_completion
FROM `ma_table` WHERE 1
Le schéma+données de la table de test :
CREATE TABLE IF NOT EXISTS ma_table (
  id int(11) NOT NULL AUTO_INCREMENT,
  prenom varchar(50) DEFAULT NULL,
  nom varchar(50) DEFAULT NULL,
  email varchar(50) DEFAULT NULL,
  pays varchar(50) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;


INSERT INTO ma_table VALUES(1, 'Peter', 'Johnson', '', 'Etats-Unis');
INSERT INTO ma_table VALUES(2, 'Pierre', 'Dupont', '[email protected]', 'France');
INSERT INTO ma_table VALUES(3, 'Robert', 'Leman', '', NULL);
INSERT INTO ma_table VALUES(4, 'Elizabeth', 'Deux', '[email protected]', '');
INSERT INTO ma_table VALUES(5, 'Hans', 'Grum', '[email protected]', '');

Voici la formule que j'ai mise en place qui calcule de le taux de complétion :
:arrow: ROUND(100-(ISNULL(NULLIF(prenom,'')) + ISNULL(NULLIF(nom,'')) + ISNULL(NULLIF(email,'')) + ISNULL(NULLIF(pays,'')))*100/4) AS taux_de_completion

Le principe est de calculer le nombre de champs vides pour chaque ligne, et de faire un calcul de pourcentage ensuite.

- " ROUND() " : c'est pour faire un arrondi pour ne pas avoir de chiffres derrière la virgule.
- " 100- " : C'est pour avoir le taux de complétion, car sans cela on aurait le taux de champs vides
- " ISNULL(NULLIF(prenom,'')) " : Là c'est le côté un peu tricky de la formule, c'est ce qui permet de retourner 1 si le champ est vide ou null
- " *100/4 " : C'est pour calculer le pourcentage, 4 ici correspond au nombre de champs sur lequel je fais le test 4 dans mon cas, 35 dans le tien
- " AS taux_de_completion " : C'est pour donner un nom + explicite au champ de résultat que tu vas récupérer

Calcul pourcentage colonnes vides

par cris84 » 31 juil. 2017, 17:22

Bonjour à tous,
je voudrais calculer le pourcentage de remplissage d'une ligne de ma table.
Il y a dans ma table 11 données qui sont facultatives sur les 35 que contient la table.
id, nom, email etc...jusqu'à 35
Comment je peux calculer en pourcentage en fonction des "champs" vides et ceux qui ne le sont pas :?:

J'utilise mysqli pour ma connexion :
$sql=mysqli_query($bdd, "SELECT * FROM ma_table WHERE url='".$_SESSION['url']."'")or die(mysqli_error($bdd));
$a=mysqli_fetch_assoc($sql);

Merci de votre aide