那里的mysql专家的问题:
我有一个数据集,列出了人工费率和费率开始的日期。这些费率可能是每小时,每天,每周甚至每月。 (也就是说,从11月6日起,每周以700美元/周的速度工作1周)
我正在尝试构建一个图表,用于绘制日常支出。我有一个简单的求和和组查询。然而,每周和每月的费率正在扭曲它。在上面的例子中,所有700美元的土地都在11月6日,当时真正只花了700美元的一天(100美元)。
数据集非常大,所以我试图让mysql做尽可能多的繁重工作,而不是必须遍历每一行。但是,如果有一种保守的方式以编程方式解决这个问题,而不是通过一个怪物查询,我会对此持开放态度。
非常多毛,对吗?有任何想法吗?
如果无法解决这个问题,我的备份计划只是按照每日费率存储所有数据,但原始费率类型(周,月)也会被存储,因此费率可以返回到
答案 0 :(得分:0)
我必须处理这个完全相同的问题,除非是基于午夜时分的工作时间。
无论如何,业务逻辑是重要的,似乎你想以X美元计算1周为每天$(1/7)X.
我要做的就是分开这个查询,首先按小时/每日进行 - 简单,一整天。然后每周/每月做一次,首先得到容易的中间数据。然后得到开头6,开头5 ,. 。开始-1(每周一次),开始计算你想要的范围内的天数。
如果需要,可以将所有这些查询联合起来获得一个返回集。
但最好在mysql之外做到最好,你会有更精细的控制。然后你可以只返回所有数据并快速循环通过它来处理头尾结束。