2010-09-10 262 views
0

我想知道是否有任何查询来计算每个行(记录)的表中使用的字段(列)的计数。计算在MySQL中使用的字段(列)的百分比

我想通过计算

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

的所有记录来更新我叫percentage usage表新领域。

任何建议表示赞赏。由于


例如:

我有一个名为leads表:

Name  Age  Designation Address 

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

我添加了一个新列名为usagepercent,我想更新新的领域作为

Name  Age  Designation Address  usagepercent 

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

-------表示为空

+0

请定义:

编辑:适应RSGanesh的解决方案。 – 2010-09-10 07:15:42

+0

Ahm,你的意思是检查有多少个字段*不是*他们的默认值,那里是'used'? – Bobby 2010-09-10 07:22:02

+0

用过的栏表示已更新或不为空 – shivg 2010-09-10 07:23:05

回答

1

像这样的东西应该工作(如果默认/空/未使用的字段的值是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); 

你必须根据你的列数更改percValue。 '拿来主义'

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

它的东西,感谢鲍比 – shivg 2010-09-10 10:48:28

+0

以其他方式 UPDATE 导致 SET usagePercent = (IF(NAME IS NOT NULL,1,0)+ IF(年龄IS NOT NULL (地址不为空,1,0))/ 4 * 100;如果(地址不为空,则为0))/ 4 * 100; – shivg 2010-09-10 11:02:46