2010-09-10 7 views
0

Je voudrais savoir s'il y a une requête pour calculer le nombre de champs (colonnes) utilisés dans un tableau pour chaque ligne (enregistrement).Calculer le pourcentage de champs (colonnes) utilisés dans MySQL

Je veux mettre à jour ma table nouveau champ appelé percentage usage en calculant

(total number of used columns)/(total number columns) * 100 

pour tous les enregistrements.

Toute suggestion est appréciée. Merci


Par exemple:

J'ai une table nommée leads:

Name  Age  Designation Address 

Jack  25  programmer  chennai 
Ram  30  ----------- ----------     
Rob  35  Analyst  ----------      

J'ai ajouté une nouvelle colonne appelée usagepercent et je veux mettre à jour le nouveau champ comme

Name  Age  Designation Address  usagepercent 

Jack  25  programmer  chennai  100 
Ram  30  ----------- ---------- 50 
Rob  35  Analyst  ---------- 75 

------- indique vide

+0

S'il vous plaît définir 'utilisé'. –

+0

Ahm, voulez-vous dire combien de champs sont * pas * leur valeur par défaut, et là pour sont 'utilisés'? – Bobby

+0

colonne utilisée signifie mise à jour ou non vide – shivg

Répondre

1

Quelque chose comme cela devrait fonctionner (si la valeur par défaut/vide/non utilisée des champs est Null):

SET @percValue=25; 
UPDATE 
    leads 
SET 
    usagePercent = 
     IF(Name IS NOT NULL, @percValue, 0) + 
     IF(Age IS NOT NULL, @percValue, 0) + 
     IF(Designation IS NOT NULL, @percValue, 0) + 
     IF(Address IS NOT NULL, @percValue, 0); 

Vous devez changer percValue en fonction du nombre de colonnes que vous avez.

Edit: Solution adaptée de RSGanesh:

UPDATE 
    leads 
SET 
    usagePercent = (
     IF(Name IS NOT NULL, 1, 0) + 
     IF(Age IS NOT NULL, 1, 0) + 
     IF(Designation IS NOT NULL, 1, 0) + 
     IF(Address IS NOT NULL, 1, 0) 
     )/4 * 100; 
+0

Il ne la chose, Merci bobby – shivg

+0

d'une autre manière MISE À JOUR conduit SET usagePercent = (IF (Nom IS NOT NULL, 1, 0) + IF (Age IS NOT NULL , 1, 0) + IF (Désignation IS NOT NULL, 1, 0) + IF (adresse IS NOT NULL, 1, 0))/4 * 100; – shivg

Questions connexes