首页 / MYSQL / mysql-每天计算正确的百分比
mysql-每天计算正确的百分比
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql-每天计算正确的百分比,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3253字,纯文字阅读大概需要5分钟。
内容图文
![mysql-每天计算正确的百分比](/upload/InfoBanner/zyjiaocheng/882/28c51031404947248762e7dd973816c0.jpg)
我有一个名为tbl_answer的表.当他们每天回答问题时,它为每个用户保存记录.
这是表格示例.
id date correct user_id question_id
1 2015-11-17 06:13:17 yes 11 1
2 2015-11-17 06:24:54 no 1 19
3 2015-11-18 02:09:13 no 129 88
4 2015-11-18 03:16:18 yes 12 98
5 2015-11-20 04:21:24 no 117 4
5 2015-11-20 04:29:24 yes 15 9
....
....
etc
有很多记录.在同一天,许多用户都回答了很多问题.因此,某天的记录会重复另一个不同的值.
现在,我想计算每天正确答案的总百分比.而且我不想显示H:m:i.
因此,我尝试使用此查询,
SELECT DATE(date) as date,
( ( select COUNT(case when correct='yes' then 1 END) )*100 / (count(DATE(date))) ) as percent
FROM tbl_answer
GROUP BY date
之后,我得到了这个结果.
因此,我需要在同一天将这些不同的百分比相加.
例如,
如果在2015-11-24中有113个问题得到答复,并且
正确的问题只有72个.因此,2015年11月24日的正确回答百分率是63.71%.
所以,我尝试这样查询
SELECT temp.date, SUM(temp.percent) AS total_percent
FROM ( SELECT DATE(date) as date,
( ( select COUNT(case when correct='yes' then 1 END) )*100 / ( count(DATE(date))) ) as percent
FROM tbl_answer
GROUP BY date
) AS temp
GROUP BY temp.date
但是,我得到这样的错误结果,
我认为(count(DATE(date)))不起作用.我尝试用(count(DATE(date)))来计算每天有多少个问题,但是我不确定为什么它不起作用.
但是现在,它只显示7200.0.我已经除以7200 /(count(DATE(date))).但是我不知道为什么它不起作用.
解决方法:
您的查询中有一些不必要的分组依据.我认为这不会导致正确的输出.因此,我采用以下查询.
由于您希望按日期列出正确答案的百分比,因此以下查询可能适合您的需求.
这是我创建的下表,用于测试查询:
CREATE TABLE `tbl_answer` (
`ID` int(11) NOT NULL AUTO_INCREMENT ,
`date` timestamp NULL DEFAULT NULL ,
`correct` char(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`ID`)
);
查询:
SELECT
DATE_FORMAT(date,"%Y-%m-%d") `date`,
ROUND(SUM(CASE WHEN correct = 'yes' THEN 1 ELSE 0 END) / COUNT(*) * 100.0, 2) correctPercentage
FROM tbl_answer
GROUP BY DATE_FORMAT(date,"%Y-%m-%d")
一些样本数据:
INSERT INTO `tbl_answer` VALUES ('1', '2016-02-08 00:00:00', 'yes');
INSERT INTO `tbl_answer` VALUES ('2', '2016-02-08 00:00:00', 'no');
INSERT INTO `tbl_answer` VALUES ('3', '2016-02-08 00:00:00', 'no');
INSERT INTO `tbl_answer` VALUES ('4', '2016-02-08 00:00:00', 'yes');
INSERT INTO `tbl_answer` VALUES ('5', '2016-02-08 00:00:00', 'yes');
INSERT INTO `tbl_answer` VALUES ('6', '2016-02-02 00:00:00', 'yes');
INSERT INTO `tbl_answer` VALUES ('7', '2016-02-02 00:00:00', 'no');
INSERT INTO `tbl_answer` VALUES ('8', '2016-02-02 00:00:00', 'no');
INSERT INTO `tbl_answer` VALUES ('9', '2016-02-02 00:00:00', 'no');
INSERT INTO `tbl_answer` VALUES ('10', '2016-02-08 00:00:00', 'no');
INSERT INTO `tbl_answer` VALUES ('11', '2016-02-08 00:00:00', 'no');
INSERT INTO `tbl_answer` VALUES ('12', '2016-02-07 00:00:00', 'no');
INSERT INTO `tbl_answer` VALUES ('13', '2016-02-07 00:00:00', 'yes');
INSERT INTO `tbl_answer` VALUES ('14', '2016-02-07 00:00:00', 'no');
这些数据表tbl_answer的外观如何:
输出:
输出说明:
> 2016-02-08共有7个条目,其中3个正确. (3/7 = 42.86)
> 2016-02-02共有4个条目,其中1个正确. (1/4 = 25.00)
> 2016-02-07共有3条记录,其中1条正确. (1/3 = 33.33)
内容总结
以上是互联网集市为您收集整理的mysql-每天计算正确的百分比全部内容,希望文章能够帮你解决mysql-每天计算正确的百分比所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。