2011年(2)
分类: Mysql/postgreSQL
2011-12-15 23:23:42
今天工作中要做这样一个事情:从MySQL数据表中获取每三行的平均值,然后给PHP在网页中做拟合显示。也就是原来表格中有300行数据,太多了显示不全,于是拟合一下,三行算一行,就显示100行的。在网页上呈现这100行的拟合数据,使得用户可以概览数据情况。
参考了网上的一些资料,主要通过下面两种方式结合起来实现:
1,使用CEIL函数:(参考了网址:)
通过让id / 3取整作为分组,就可以求取每组的平均值了,每组最大最小值也可通过Max和Min函数获取。
如果要拟合的行不是整数也没关系CEIL(id / 2.5) 也可正常工作,不过这样求出来的是前两行作为一个分组,后面三行作为一个分组,基本不影响拟合效果。
2,通过表查询的结果,其id不是连续的,所以无法直接用CEIL(id / 3),怎么办呢,可以插入一列到查询结果,令这一列的内容就是行号,MySQL没有直接的方法,可以通过自定义变量来解决,也还算优雅。(参考网址)
通过结合方式1,2,我们就可以用一个查询语句(当然得用子查询)实现求取多行平均值的功能了。