如何解决用php和mysql集群和图形数据
| 目的: 创建一个图表以显示得分最高的群集所在的位置。 我有一个包含数千行和以下列的表: id | matchId |用户名|得分了 所有分数都在1到5之间。 我想创建一个数组,该数组的总和在最近的十分之一,因此,如果我有跟随分数(1、1.01、1.113、1.1、1.1、1.25、1.23、1.3),我的数组应该像这样 (2、3、2、1),其中我们有2个条目,它们分别是> = 1和<1.1,3个是> = 1.1和<1.2,2个是> = 1.2和<1.3,依此类推。 然后,我想使用此数据在X / Y图表上绘制点,以给我分配数据,其中X轴为聚类得分,Y轴为这些得分有多少个条目。 我应该注意,给定的比赛会有很多得分,但是我可以使用AVG(score)和按matchId分组来创建一个数组,该数组给出每个比赛的平均得分,所以我认为这不会成为一个问题。 谢谢。解决方法
您可以在执行标准舍入后通过分组和计数来解决此问题。见下文:
CREATE TABLE avgtenths(val FLOAT);
INSERT INTO avgtenths VALUES (1),(1.01),(1.113),(1.1),(1.25),(1.23),(1.3);
SELECT ROUND(val,1) r,COUNT(*) c FROM avgtenths GROUP BY r;
这将产生以下结果:
+------+---+
| r | c |
+------+---+
| 1.0 | 2 |
| 1.1 | 3 |
| 1.2 | 2 |
| 1.3 | 1 |
+------+---+
这里的技巧是舍入函数,它接受第二个参数来表示小数位数:http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_round
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。