【发布时间】:2020-05-22 13:25:28
【问题描述】:
with sales as
(
select COUNT(sale) As Number_of_sale,
TO_CHAR(dates,'YYYY-MON') As Period
from orders
where dates between date '2020-03-01' and date '2020-03-31'
group by TO_CHAR(dates,'YYYY-MON')
union all
select COUNT(sale) As Number_of_sale,
TO_CHAR(dates,'YYYY-MON') As Period
from orders
where dates between date '2020-04-01' and date '2020-04-30'
group by TO_CHAR(dates,'YYYY-MON')
)
select Number_of_sale, period,
case when to_char(round((Number_of_sale-lag(Number_of_sale,1, Number_of_sale) over (order by period ))/ Number_of_sale*100,2), 'FM999999990D9999') <0
then to_char(round(abs( Number_of_sale-lag(Number_of_sale,1, Number_of_sale) over (order by period ))/ Number_of_sale*100,2),'FM999999990D9999')||'%'||' (Increase) '
when to_char(round((Number_of_sale-lag(Number_of_sale,1,Number_of_sale) over (order by period ))/Number_of_sale*100,2),'FM999999990D9999')>0
then to_char(round(abs(Number_of_sale-lag(Number_of_sale,1, Number_of_sale) over (order by period ))/Number_of_sale*100,2),'FM999999990D9999')||'%'||' (Decrease) '
END as variances
from sales
order by variances asc;
我得到的输出
Number_of_sale | Period |Variances
50 | 2020-Mar | 100%(increase)
100 | 2020-Apr | Null
我需要的输出:- 我需要过去 12 个月的数据,以及它们与上个月的差异。
【问题讨论】:
-
请定义方差的含义。您显然没有使用标准的统计定义。样本数据和期望的结果也会有所帮助。
-
Number_of_sale |期间 |方差 500 | 2020年四月 | 20%(增加(根据 2019 年 3 月的数据)) 375 | 2020-3月 | 0.2%(增加(根据 2019 年 2 月的数据)) 360 | 2020 年 2 月 |空等等...
-
acc。到我的查询..我只获取两个月的记录,我需要过去 12 个月.. 记录
-
也许你应该在
dates BETWEEN x AND y里放两个多月的时间!
标签: sql oracle plsql oracle-sqldeveloper