0

那里的mysql大师的问题:

我有一个数据集,列出了人工费率和费率开始的日期。这些费率可以是每小时、每天、每周甚至每月。(即有人从 11 月 6 日开始以每周 700 美元的价格工作 1 周)

我正在尝试建立一个图表来绘制每日支出随时间变化的图表。我有一个简单的总和和组查询。然而,每周和每月的利率正在扭曲它。在上面的示例中,所有 700 美元都在 11 月 6 日到达,而这 700 美元中真正只花了一天的价值(100 美元)。

数据集非常大,所以我试图让 mysql 尽可能多地完成繁重的工作,而不必遍历每一行。但是,如果有一种保守的方法可以以编程方式解决这个问题,而不是通过怪物查询,我愿意接受。

毛茸茸的,对吧?有任何想法吗?

如果无法回答,我的备份方案只是将所有数据按日费率存储,但原始费率类型(周、月)也将被存储,以便返回该费率。

4

1 回答 1

0

我不得不处理这个完全相同的问题,除了它是基于午夜的工作时间。

无论如何,业务逻辑是最重要的,您似乎想以 X 美元计算 1 周为每天 $(1/7)X。

我要做的是将这个查询分开,首先每小时/每天做一次 - 很简单,一整天。然后每周/每月做一次,首先得到中间数据,这很容易。然后得到 begin-6, beginning-5, . . begin-1(每周),开始计算您想要的范围内的天数。

如果需要,您可以合并所有这些查询以获得一个返回集。

但可能最好在 mysql 之外进行,您将获得更精细的粒度控制。然后,您可以返回所有数据并快速循环以处理头部和尾部。

于 2012-11-15T02:55:02.567 回答