2010-09-10 161 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