我需要组合一个方法,使我能够量化一行中有多少个字段已被用户填充。
例如:
User Name Age Country Gender Height
1 Mike 34 USA Male 6
2 Bill 23 CA 5
3 Jane 31 USA 在上面的示例中,我想查询数据库并返回一个反映用户记录完成程度的值。例如:
User 1 = 100% complete
User 2 = 80% complete
User 3 = 60% complete我想知道这是否需要通过SQL子句来完成,或者是否可以通过PHP SQL函数来查询数据库并计算完成度。
有什么建议要怎么做吗?我使用的是PHP5 (codeigniter)和SQL 5.0.77,但任何路线图都会非常感谢。
发布于 2011-07-17 06:52:16
$result = mysql_query('SELECT * FROM `MyTable`');
while($row = mysql_fetch_row($result)){
$empty_count = 0;
$count = count($row);
for($i = 0; $i < $count; $i++)
if($row[$i] === '' || $row[$i] === 'NULL')
$empty_count++;
echo 'User '.$row[0].' = '.((int)(100*(1-$empty_count/($count-1)))).'% complete';
}发布于 2011-07-17 06:58:28
select
User,
(
case Name when '' then 0 else 1 end
+
case when Age is null then 0 else 1 end
+
case Country when '' then 0 else 1 end
+
case Gender when '' then 0 else 1 end
+
case when Height is null then 0 else 1 end
) * 100 / 5 as complete根据no info的含义使用大小写:空或空。
发布于 2011-07-17 06:49:09
我认为在php中可以更好地解决这个问题,在php中,您可以创建一个函数来定义列名并为每个列赋一个权重,然后根据从数据库检索到的数据来计算完成百分比,为什么名称可以算作20%,年龄可以算作5%等等。列和权重定义甚至可以存储在外部,比如xml文件中,这样其他人就可以处理百分比,而不需要程序员来调整要求。
https://stackoverflow.com/questions/6720725
复制相似问题