【问题标题】:Spreading Out Data Before Grouping在分组之前展开数据
【发布时间】:2012-11-15 10:55:02
【问题描述】:

请教 mysql 大师的问题:

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

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

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

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

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

【问题讨论】:

    标签: mysql algorithm


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      相关资源
      最近更新 更多