用户创建一个计划,在 N (五个)差异日期购买一些商品。
+--------------+---------+------------+
| plan_date_id | plan_id | ad_date |
+--------------+---------+------------+
| 1 | 1 | 2015-09-13 |
| 2 | 1 | 2015-09-15 |
| 3 | 1 | 2015-09-17 |
| 4 | 1 | 2015-09-21 |
| 5 | 1 | 2015-09-24 |
+--------------+---------+------------+
周跨度:对于每个产品周,跨度将根据产品首次销售的日期+ 6到期日部分计算。
即,对于 product_ID 10 ,首次购买是在2015-09-13进行的,所以 本周跨度将是2015-09-13至2015-09-19(2015-09-13 + 6)。
产品的折扣逻辑: (一周内重复的总数 - 1)* 10%。
但最高折扣可以是30%。
+---------------+--------------+-------------+
| plan_product_id | plan_date_id | product_id |
+-----------------+--------------+------------+
| 1 | 1 | 10 |
| 2 | 2 | 5715 |
| 3 | 2 | 10 |
| 4 | 3 | 10 |
| 5 | 3 | 128900 |
| 6 | 4 | 10 |
| 7 | 5 | 10 |
+-----------------+--------------+------------+
所以在我的例子中我想要折扣如下。
+---------------+--------------+-------------+------------+
| plan_product_id | plan_date_id | product_id | discount |
+-----------------+--------------+------------+------------+
| 1 | 1 | 10 | 0% |
| 2 | 2 | 5715 | 0% |
| 3 | 2 | 10 | 10% |
| 4 | 3 | 10 | 20% |
| 5 | 3 | 128900 | 0% |
| 6 | 4 | 10 | 0% |
| 7 | 5 | 10 | 0% |
+-----------------+--------------+------------+------------+
请注意,plan_product_id 6和7
中 0%折扣目前,我在python中进行折扣计算。 首先获取所有必需的记录。然后创建一个以product_id为键的dict, 在价值中,有另一个字典持有基准日期和一周内重复的时间。然后循环到所有记录。
最好的方法是什么?
是否可以仅使用MySQL或Django Orm进行此操作?
MySQL中的循环会提高性能吗?