是否有原因(除了已经提到的日期之外)为什么不使用ActiveRecord中的内置组功能?您似乎关注“后期处理”,我认为这并不值得担心.

你在Rails中,所以你应该首先寻找一个Rails解决方案[1].我的第一个想法是做类似的事情

Product.average(:sales_price,:group => "DATE(created_at)",:conditions => ["merchant_id=?",1])

哪个ActiveRecord变成了你描述的sql.假设Merchant和Product之间有一个声明的has_many关联,那么你可能会更好地使用它,所以类似于:

ave_prices = Merchant.find(1).products.average(:sales_price,:group => "DATE(created_at)")

(我希望您对模型的描述为“products_sold”是某种转录错误,顺便说一下 – 如果没有,您的课程命名就会有点消息!)

毕竟,你回到了开始的地方,但是你以更传统的Rails方式到达那里(Rails真的很重视惯例!).现在我们需要填补空白.

我假设你知道你的日期范围,让我们说它被定义为从from_date到to_date的所有日期.

date_aves = (from_date..to_date).map{|dt| [dt,0]}

这会将完整的日期列表构建为数组.我们不需要得到平均值的日期:

ave_price_dates = ave_prices.collect{|ave_price| ave_price[0]} # build an array of dates

date_aves.delete_if { |dt| ave_price.dates.index(dt[0]) } # remove zero entries for dates retrieved from DB

date_aves.concat(ave_prices) # add the query results

date_aves.sort_by{|ave| ave[0] } # sort by date

这一批看起来有点混乱:我认为它可能更温和,更清洁.我正在研究构建一个Hash或Struct,而不是留在数组中.

[1]我并不是说不使用sql – 在ActiveRecord无法生成最有效查询的情况下会发生这种情况,并且您会依赖于find_by_sql.这很好,它应该是这样的,但我认为你应该尝试使用它作为最后的手段.

mysql avg 时间_MySQL或Rails在特定日期范围内每天获得AVG的最佳方式相关推荐

  1. mysql存储过程时间_mysql时间操作函数和存储过程

    因为业务须要统计一批数据.用到关于mysql的时间操作函数和存储过程,问题已经基本解决.把过程记录下: 1. mysql的语句中不支持直接用循环.循环仅仅能在存储过程中使用. 2. 写为文件时,注意一 ...

  2. mysql iso 时间_mysql 中 时间和日期函数

    原文链接: mysql 中 时间和日期函数 - redfox - 博客园 http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.htm ...

  3. mysql慢查询日志时间戳_Mysql查询在时间戳的日期范围内非常慢

    要提高此查询的性能,请使用合适的索引(将date_run作为索引中的前导列),并在等效谓词中引用"裸列". 在函数中包装列(如DATE(),就像在查询中一样)会禁用MySQL优化器 ...

  4. mysql地区时间_mysql – 带时区的日期时间格式

    首先,阅读DATETIME和TIMESTAMP类型in the mysql docs. 然后,决定使用哪种字段类型: >如果要在不进行MySQL执行时区转换的情况下提交,存储和检索相同的值,请使 ...

  5. ci框架 mysql 超时时间_mysql 字符集和校验规则( CHARSET amp; COLLATE)

    我们首先看下常见建表语句: mallAllGoodsCREATE TABLE `qywl`.`mallAllGoods` ( `id` varchar(64) NOT NULL COMMENT '主键 ...

  6. mysql 默认时间_mysql中如何设置默认时间为当前时间?

    展开全部 修改日期类型为timestamp 并允许空,如下: CREATE TABLE `test` (`aaaa` varchar(50) NOT NULL,`createday` timestam ...

  7. mysql 时区时间_MySql的时区(serverTimezone)引发的血案

    前言 mysql8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空. 血案现场 配置jdbc的URL:jdbc:mysql://[IP]:[PORT]/[DB]?c ...

  8. mysql 当前时间_mysql获取系统当前时间的函数

    本节主要内容: mysql 系统当前时间 函数 在mysql中取得系统当前的时间,可以使用如下函数: NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DAT ...

  9. mysql存储过程时间_mysql存储过程及日期函数实践

    业务场景说明: 假设待审核的订单表有三种状态,分别是"正常待审核"|"即将过期"|"已经过期" 订单提交后10小时内未处理:正常待审核 订单 ...

最新文章

  1. One Class SVM 对于样本不均衡处理思路——拿出白样本建模,算出outlier,然后用黑去检验效果...
  2. 一个关于反序列化的小问题
  3. 数据结构(严蔚敏 第二版)绪论部分中关于算法的相关知识
  4. Coverity 配置coverity扫描python静态代码检测
  5. mac修改hosts刷新DNS使其立即生效
  6. 柔性自动化生产线及工业机器人应用实训系统(八站)
  7. Latex排版学习笔记(4)——Latex插入项目符号和编号
  8. SQL笔面试题:如何求取中位数?
  9. 虚拟机搭建服务器实验报告,架设服务器实验报告.pdf
  10. 关于android属性persistent的问题
  11. 盘古石考核取证复现检材1(??)
  12. js和jquery获取父级元素、子级元素、兄弟元素的方法
  13. iOS APP中嵌入网速监测功能
  14. 大脑构造图与功能解析_人类大脑的生理构造及功能分区
  15. 如何隐藏IP地址的网站
  16. JavaScript的调试工具
  17. ESP8266_MQTT协议
  18. 基于PHP+MySQL小区快递自助取件系统的设计与实现
  19. 【游戏通关】解题报告
  20. Stevey's Google Platforms Rant

热门文章

  1. 根据后续数组重建搜索二叉树
  2. leetcode 目录
  3. 3万字长文记录Docker 最全学习笔记,手把手带你入个门
  4. R语言应用实战系列(三)-智能推荐模型的构建
  5. Python应用实战系列-如何通过Python来操作Oracle数据库:cx_Oracle
  6. 多面性的打赏功能,由直播行业引发的一点思考
  7. Linux 运维故障排查思路,有这篇文章就够了
  8. Python入门100题 | 第040题
  9. Java中导入错误的jar所引发的问题
  10. awk打印第一个字母