sup*_*sky 1 sql oracle analytic-functions
说,我有以下数据:
select 1 id, date '2007-01-16' date_created, 5 sales, 'Bob' name from dual union all
select 2 id, date '2007-04-16' date_created, 2 sales, 'Bob' name from dual union all
select 3 id, date '2007-05-16' date_created, 6 sales, 'Bob' name from dual union all
select 4 id, date '2007-05-21' date_created, 4 sales, 'Bob' name from dual union all
select 5 id, date '2013-07-16' date_created, 24 sales, 'Bob' name from dual union all
select 6 id, date '2007-01-17' date_created, 15 sales, 'Ann' name from dual union all
select 7 id, date '2007-04-17' date_created, 12 sales, 'Ann' name from dual union all
select 8 id, date '2007-05-17' date_created, 16 sales, 'Ann' name from dual union all
select 9 id, date '2007-05-22' date_created, 14 sales, 'Ann' name from dual union all
select 10 id, date '2013-07-17' date_created, 34 sales, 'Ann' name from dual
Run Code Online (Sandbox Code Playgroud)
我想获得如下结果:
Name Total_cumulative_sales Total_sales_current_month
Bob 41 24
Ann 91 34
Run Code Online (Sandbox Code Playgroud)
在这张表中,对于Bob来说,他的总销售额从一开始就是41.而在本月即7月份,他整个月的销售额为24%.
如何编写SQL来获得此结果?
试试这种方式:
select name, sum(sales) as Total_cumulative_sales ,
sum(
case trunc(to_date(date_created), 'MM')
when trunc(sysdate, 'MM') then sales
else 0
end
) as Total_sales_current_month
from tab
group by name
Run Code Online (Sandbox Code Playgroud)
更多信息
| 归档时间: |
|
| 查看次数: |
3828 次 |
| 最近记录: |