SQL语句能计算增长率?

qq_27797971 2018-08-02 10:51:30
数据是这样的
table1:
id num date
1 50 2018-3-31
2 40 2017-3-31
3 30 2016-3-31

能通过一条SQL语句计算 2018-3-31相对2017-3-31的增长率?
...全文
1275 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dear SQL(燊) 2018-12-10
  • 打赏
  • 举报
回复
sql server 2016+
--测试数据
if not object_id(N'Tempdb..#table1') is null
    drop table #table1
Go
Create table #table1([id] int,[num] FLOAT,[date] Date)
Insert #table1
select 1,50,'2018-3-31' union all
select 2,40,'2017-3-31' union all
select 3,30,'2016-3-31'
Go
--测试数据结束

select *,增长率=([num]-lead([num])over(order by [date] desc))/lead([num])over(order by [date] desc)*100
from #table1

id          num                    date       增长率
----------- ---------------------- ---------- ----------------------
1           50                     2018-03-31 25
2           40                     2017-03-31 33.3333333333333
3           30                     2016-03-31 NULL

qq_27797971 2018-08-08
  • 打赏
  • 举报
回复 1
看不太懂,我用的是mysql:
只有一个table,类似下面这种:

table_shouru:
日期 收入 支出
2018/3/31 369 119
2017/12/31 168 507
2017/9/30 124 389
2017/6/30 83 262

计算各个日期的增长率。

二月十六 2018-08-03
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#table1') is null
drop table #table1
Go
Create table #table1([id] int,[num] FLOAT,[date] Date)
Insert #table1
select 1,50,'2018-3-31' union all
select 2,40,'2017-3-31' union all
select 3,30,'2016-3-31'
Go
--测试数据结束
SELECT
a.date,
CASE
WHEN b.num IS NOT NULL
THEN (a.num - b.num) / b.num
ELSE
0
END AS 增长率
FROM
#table1 a
LEFT JOIN
#table1 b
ON a.id = b.id - 1;


IEEE_China 2018-08-03
  • 打赏
  • 举报
回复


;with cte(Id,num,date) as(
select 1, 50.00,'2018-03-31'
union all select 2,40.00,'2017-03-31'
union all select 3,30.00,'2016-03-31'
)
select a.num as ANum,b.num as BNum,(a.num-b.num)/b.num as Rate from cte a, cte b
where a.date='2018-03-31' and b.date='2017-03-31'



IEEE_China 2018-08-03
  • 打赏
  • 举报
回复
同比增长率=(当年的指标值-去年同期的值)÷去年同期的值*100%

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧