如何计算MySQL数据库中结果列的百分比。
如何计算MySQL数据库中结果列的百分比。
下面是一个记录用户对多个不同投票的集合回应的表格;结果存储在response列中。
CREATE TABLE IF NOT EXISTS `results` ( `poll_id` int(11) NOT NULL, `response` varchar(128) COLLATE utf8_unicode_ci NOT NULL, `ip_number` varchar(128) COLLATE utf8_unicode_ci NOT NULL, KEY `poll_result` (`poll_id`,`poll_answer`) )
每个投票都有一个唯一的ID;例如,一个要求用户在两辆车之间选择的投票将具有poll_id为1,但在response列中将包含两种可能的车型回应,例如Range或Ford。
SELECT poll_answer FROM `results` WHERE poll_id = 1 AND poll_answer = 'Range'
现在我需要起草一个SQL查询来确定以下内容:
- 第1个投票中选择Range Rover作为最喜欢的车辆的用户的总数和百分比。
- 从第1个投票中选择Ford的用户的总数和百分比。
- 回应第1个投票的用户的总数。
我知道如何从一列中得到总数,但不知道如何从同一列中得到两个不同的总数(使用两个不同的where子句);然后计算百分比。
SELECT COUNT(response) FROM `results` WHERE poll_id = 1 AND response = 'range'
问题出现的原因:用户想要计算MySQL数据库中结果列的百分比,但在尝试实现时遇到了错误。
解决方法:用户可以使用简单的分组来实现计算,或者通过添加where子句来过滤数据。以下是一个示例查询语句,可以计算结果列的百分比:
Select poll_id, (Select Count(poll_id) from results where poll_id = r.poll_id group by poll_id) Total_in_Poll, response, count(response) Total_responded, (Count(response) / ((Select Count(poll_id) from results where poll_id = r.poll_id group by poll_id) * 1.0) * 100.00) Percent_responded FROM results r GROUP BY poll_id, response order by poll_id
用户在尝试使用这个查询语句时遇到了错误报告。原来是因为MySQL不支持将浮点数转换为整数,所以用户需要对查询语句进行更新。更新后的查询语句如下:
Select poll_id, (Select Count(poll_id) from results where poll_id = r.poll_id group by poll_id) Total_in_Poll, response, count(response) Total_responded, (Count(response) / ((Select Count(poll_id) from results where poll_id = r.poll_id group by poll_id) * 1.0) * 100.00) Percent_responded FROM results r GROUP BY poll_id, response order by poll_id
在使用这个更新后的查询语句后,用户成功地计算出了结果列的百分比。然而,在尝试在PHP脚本中提取这些值时,用户遇到了另一个错误。错误信息是`mysql_fetch_assoc() expects parameter 1 to be resource, object given`。用户在提取数据的代码中使用了`mysql_fetch_assoc($result)`,但出现了错误。
为了解决这个问题,用户咨询了Christian并得到了相关建议。Christian建议用户查看stackoverflow上的一个帖子,链接如下:[how to prevent this error warning mysql fetch assoc expects parameter 1 to](http://stackoverflow.com/questions/3129374)。用户按照建议进行了修改,并成功解决了提取数据时的问题。
最后,用户非常感谢Christian的帮助。通过Christian的建议和指导,用户成功地计算出了结果列的百分比,并解决了在PHP脚本中提取数据时的错误。
问题的出现原因:用户想要在MySQL数据库中计算结果列的百分比。
解决方法:通过对条件表达式进行求和来实现。在给定的MySQL数据库中,可以使用以下查询语句来计算结果列的百分比:
SELECT count(case poll_answer when 'Range' then 1 end) total_range, count(case poll_answer when 'Range' then 1 end) * 100 / count(*) perc_range, count(case poll_answer when 'Ford' then 1 end) total_ford, count(case poll_answer when 'Ford' then 1 end) * 100 / count(*) perc_ford, count(*) total_response FROM `results` WHERE poll_id = 1
以上查询语句会返回四个结果列:total_range(回答为"Range"的总数),perc_range(回答为"Range"的百分比),total_ford(回答为"Ford"的总数),perc_ford(回答为"Ford"的百分比),以及total_response(总回答数)。这些结果列可根据实际需要进行调整和更改。
通过使用条件表达式和聚合函数,用户可以计算结果列中各个选项的百分比。这样可以更好地了解回答的分布情况,并从中得出有用的信息。