如何计算MySQL数据库中结果列的百分比。

12 浏览
0 Comments

如何计算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. 第1个投票中选择Range Rover作为最喜欢的车辆的用户的总数和百分比。
  2. 第1个投票中选择Ford的用户的总数和百分比。
  3. 回应第1个投票的用户的总数。

我知道如何从一列中得到总数,但不知道如何从同一列中得到两个不同的总数(使用两个不同的where子句);然后计算百分比。

SELECT COUNT(response) FROM `results` WHERE poll_id = 1 AND response = 'range' 

0
0 Comments

问题出现的原因:用户想要计算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脚本中提取数据时的错误。

0
0 Comments

问题的出现原因:用户想要在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(总回答数)。这些结果列可根据实际需要进行调整和更改。

通过使用条件表达式和聚合函数,用户可以计算结果列中各个选项的百分比。这样可以更好地了解回答的分布情况,并从中得出有用的信息。

0