在新的日期扣除出售价格

时间:2016-01-05 12:44:24

标签: sql oracle

我有一个按日卖出的物品,第二天(有选择)我想扣除卖出的一半和其余时间的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

enter image description here

以下是我的愿望输出,选择在新的日期时扣除一半旧的卖出

添加时巧克力棒的销售量为25,第二天扣除一半= 12.5但是由于其13的四舍五入。 是否有可能有这样的结果

enter image description here

修改

enter image description here

1 个答案:

答案 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值非常重要。