Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算MySQL中已使用字段(列)的百分比_Mysql - Fatal编程技术网

计算MySQL中已使用字段(列)的百分比

计算MySQL中已使用字段(列)的百分比,mysql,Mysql,我想知道是否有任何查询来计算表中每一行(记录)的已用字段(列)计数 我想通过计算更新我的新表字段百分比使用率 (total number of used columns) / (total number columns) * 100 所有记录 如有任何建议,我们将不胜感激。谢谢 例如: 我有一个名为leads的表: Name Age Designation Address Jack 25 programmer chennai Ram

我想知道是否有任何查询来计算表中每一行(记录)的已用字段(列)计数

我想通过计算更新我的新表字段
百分比使用率

(total number of used columns) / (total number columns) * 100
所有记录

如有任何建议,我们将不胜感激。谢谢


例如:

我有一个名为
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

----
表示空

类似的内容应该可以工作(如果字段的默认/空/未使用值为
Null
):

您必须根据您拥有的列数更改percValue

编辑: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;

啊,你的意思是检查有多少字段不是它们的默认值,并且有“已使用”字段吗?已使用列表示是否已更新empty@bobby. 不,我的表中有40个字段和大约50k条记录,我想计算每个记录的更新字段数。我想我清楚了@RSGanesh:等等,你的意思是你有50k个空行,现在你想知道哪一个被更改了?@bobby:请检查我上面的例子它能做到这一点,谢谢bobby。另一种方法是更新leads SET usagePercent=(如果(名称不为NULL,1,0)+如果(年龄不为NULL,1,0)+如果(名称不为NULL,1,0)+如果(地址不为空,1,0))/4*100;
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;