SQL每日一题(20201107)希望将每个月之前的月份进行累加

SQL每日一题(20211223)
在这里插入图片描述
/*
才开始想用sum()over()发现 total不是顺序排好了的 所以行不通
1.这里的思路是row_number 来进行排序 跟 另外一个row_number 进行排序的进行内连接 条件是 a.pm<=b.pm
这样b.month得到的为 7(包含了一月份到7月份的值)+6+5+4+3+2+1=28个
2.根据month进行 a.total求和
这种自连接的方法有点不太好理解
*/在这里插入图片描述
在这里插入图片描述

select b.month, sum(a.total) as cussum
from (SELECT *, row_number() over () as pm FROM T1109) a,
     (SELECT *, row_number() over () as pm FROM T1109) b where a.pm<=b.pm
GROUP by b.month

在这里插入图片描述

SELECT `month`,
       sum(total) over (
           ORDER BY CASE
                        WHEN `month` = '一月份' THEN 1
                        WHEN `month` = '二月份' THEN 2
                        WHEN `month` = '三月份' THEN 3
                        WHEN `month` = '四月份' THEN 4
                        WHEN `month` = '五月份' THEN 5
                        WHEN `month` = '六月份' THEN 6
                        WHEN `month` = '七月份' THEN 7
                        WHEN `month` = '八月份' THEN 8
                        WHEN `month` = '九月份' THEN 9
                        WHEN `month` = '十月份' THEN 10
                        WHEN `month` = '十一月份' THEN 11
                        WHEN `month` = '十二月份' THEN 12 END ) AS total FROM t1109

在这里插入图片描述

SELECT *
 ,SUM(TOTAL) OVER(
ORDER BY locate(SUBSTRING(MONTH,1,1)
,'一,二,三,四,五,六,七,八,九,十,十一,十二') ) 
AS SUMTOTAL
FROM T1109
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

time丶sand

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值