我有一个按日卖出的物品,第二天(有选择)我想扣除卖出的一半和其余时间的1/3。
示例:我在1/1/2016
出售6 times
时有巧克力棒,
如果我在2016年2月1日选择巧克力'我希望卖出价为3(6月2日半价= 3),如果我在2016年3月1日选择巧克力,我希望卖出价为2(1/3的1/00)
另一个真实的例子:
我有下表:
create table ex_item ( id number(5) , name varchar2 (100) , sell number(4), date_added date)
在得到以下结果后,我收到了正常的卖单:
SELECT * FROM ex_item WHERE DATE_ADDED >=TO_DATE('1/1/2016','DD/MM/YY') ORDER BY SELL DESC
以下是我的愿望输出,选择在新的日期时扣除一半旧的卖出
添加时巧克力棒的销售量为25,第二天扣除一半= 12.5但是由于其13的四舍五入。 是否有可能有这样的结果
修改
答案 0 :(得分:1)
我认为avg_sales_till_today
中的结果应每天更改,将总销售额除以查询执行日期之前的天数。
编辑了查询。从以前的版本看,使用函数sysdate
投射to_date()
会导致奇怪的结果,因为YEAR是0016
而不是2016
。因此,计算结果为负数,最终结果为0. 此版本应该可以使用。
SELECT
id, name, sell, date_added,
ROUND( sell / ( to_char( sysdate - date_added, '999999D99' ) + 1.0 ) ) AS avg_sales_till_today
FROM
ex_item
由于运算符优先级,在除法之前添加1
值非常重要。