我有下表
+------------+----------+------------+
| SaleDate | SaleName | SaleAmount |
+------------+----------+------------+
| 2021-03-01 | Jack | 40 |
| 2021-03-02 | Mark | 60 |
| 2021-03-03 | Sam | 30 |
| 2021-03-03 | Mark | 70 |
| 2021-03-02 | Sam | 100 |
| 2021-03-01 | Jack | 70 |
+------------+----------+------------+
我想找到按日期累计的 SalesAmount,同时还保持表中销售人员姓名的数量不断增加。
+------------+-----------------+-----------------+
| SaleDate | Count(SaleName) | Sum(SaleAmount) |
+------------+-----------------+-----------------+
| 2021-03-01 | 1 | 110|
| 2021-03-02 | 3 | 270|
| 2021-03-03 | 3 | 370|
+------------+-----------------+-----------------+
所以基本上任务是消除可能每天或以累积方式发生的重复名称?
您可以使用窗口函数来获取销售人员首次出现的日期。然后使用聚合和累积和:
select saledate,
sum(sum(case when seqnum = 1 then 1 else 0 end)) over (order by saledate),
sum(sum(amount)) over (order by saledate) as running_amount
from (select t.*,
row_number() over (partition by salename order by saledate) as seqnum
from t
) t
group by saledate
order by saledate;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)