多区间下求任意一个月的总额问题

redcn2004 2015-10-28 01:47:12
三个表:
表1 : BaseInfo 基础数据 记录面积 收费开始日期 结束日期
表2: Price 记录月单价 价格有效起始日期 结束日期


Create table BaseInfo
(
id int(4) PRIMARY auto_increment,
name varchar(10) not null ,
area DECIMAL(10,2),
feestartdate date,
feeenddate date
);

Create table Price
(
pid int(4) PRIMARY auto_increment,
name VARCHAR(10) not null,
amount DECIMAL(10,2),
pricestartdate date,
priceenddate date
);

insert into BaseInfo(name,area,feestartdate,feeenddate) values('A1',25.2,'2015-06-05','2016-07-02'),('A2',31.2,'2015-06-01','2015-07-31'),('A3',20,'2015-06-30','2015-07-25');
insert into Price(name,amount,pricestartdate,priceenddate) values('A1',2.5,'2015-01-01','2015-06-15'),('A1',3.1,'2015-06-16','2015-12-31'),('A2',3.1,'2015-01-01','2015-12-31'),('A3',3.1,'2015-01-01','2015-6-30'),('A3',2.9,'2015-07-01','2015-12-31');


要求:任意一个月任意一个name的 月度总额。
规则如下:
总额=面积*月单价

计算的时候:
1,需考虑name 计费起始日期,如果起始日期不为当日的1日,则以天数计算。
如计算A3 6月份的总额 ,则这么计算如下: 面积:20*(1/30)*3.1 =2.07 元(结果四舍五入保留2位数),6月份计费从最后一天算起,所以只算一天。因为单价为月单价,故除以30天。
如计算A2 6月份的总额,则计算如下:面积 31.2*3.1=96.72。
2. 计算时,月单价取值也需考虑有效期。如果一个月单价上半月和下半月价格不同,那么分别以天计算后,合并起来就是一月的总额。比如计算A1的 6月份的总额计算如下: 面积 25.2*((15-5+1)/30)*2.5+25.2*((30-16+1)/30)*3.1 = 62.16 元
即计算时:需考虑计费有效日期 和 月单价有效日期。


因为这个计算涉及到多区域日期的计算,自己尝试了一下,发现要么用函数,要么用SQL语句实现。目前对于SQL语句,暂无灵感。特放出来,大家研究研究,看看一条SQL语句是否可实现任意指定月份的计算。

...全文
173 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
redcn2004 2015-11-10
  • 打赏
  • 举报
回复
事实上我自己搞定了
LongRui888 2015-10-30
  • 打赏
  • 举报
回复
看上去好复杂的需求啊。。。
计算机算法设计分析 请概述最小代价生成树的贪心选择性质并证明。 描述Ford-Fulkerson算法基本步骤。 用伪代码或程序语言写出二分搜索的算法,并分析其时间复杂度。 简述分治法在每一层递归上的三个步骤的具体内容。 简述快速排序的具体过程。 有面值分别为1、5和11单位的硬币,希望找回总额为15单位的硬币,贪心算法的思路和最优解分别是什么? 简述贪心算法的基本思想? 快速排序算法基本思想? 简述程序与算法的异同点。 简单区分语言、算法、程序的不同之处。 简单阐述动态规划算法的基本思想。 分治法基本步骤是什么? 简述动态规划法解最优化问题通常的几个步骤。 已知变量x和y中分别存放了数据,交换其中的数据。请用自然语言描述算法。 阐述动态规划算法与分治法不同之处。 试叙述流网络的基本性质。 试给出归并排序的复杂度分析。 什么是最优子结构性质? 写出求它们的最大公约数的算法或程序。 输入一个元素,检查数组列表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,该数组排序完毕。 归并排序是指将数组一分为二,分别对每个集合单独排序,然后将已

57,063

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧