当前位置:首页 » 编程语言 » sql计算两条数据同比环比
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql计算两条数据同比环比

发布时间: 2022-10-16 11:22:45

sql字段设计中如何实现同比环比功能

请将数据类型设置为 decimal 数据类型,设置时,注意数据精度。

❷ 求问Mysql同比环比SQL语句怎么写

首先明确概念:
环比增长率=(本期数-上期数)/上期数*100% 反映本期比上期增长了多少。
同比增长率=(本期数-同期数)/同期数*100% 指和去年同期相比较的增长率。

❸ 请教Oracle计算同比和环比sql语句

首先明确概念:

环比增长率=(本期数-上期数)/上期数*100%反映本期比上期增长了多少。

同比增长率=(本期数-同期数)/同期数*100%指和去年同期相比较的增长率。

数据表名:d_temp_data
查询数据如下:

查询的sql语句如下:

selecta.*,

nvl(round(money/lag(money)over(orderbyid)*100,2),'0')||'%'"同比",

nvl(round(money/lag(money)over(partitionbymonorderbyid)*100,2),'0')||'%'"环比"

fromd_temp_dataa


idinameyearmonmoney同比环比

----------------------------------------------------------------------

1 1 飞马股 2013 01 300 0% 0%

2 2 飞马股 2013 02 270 90% 0%

3 3 飞马股 2013 03 350 129.63% 0%

4 4 飞马股 2013 04 180 51.43% 0%

5 5 飞马股 2013 05 500 277.78% 0%

6 6 飞马股 2013 06 400 80% 0%

7 7 飞马股 2014 01 210 52.5% 70%

8 8 飞马股 2014 02 240 114.29% 88.89%

9 9 飞马股 2014 03 320 133.33% 91.43%

10 10 飞马股 2014 04 480 150% 266.67%

11 11 飞马股 2014 05 400 83.33% 80%

❹ sql字段设计中如何实现同比环比功能

select '上期' as '期间' ,sum(sl) sl,sum(je) je from subfhd where kdrq between '2016-06-01' and '2016-06-30'union select '本期' as '期间',sum(sl) sl,sum(je) je from subfhd where kdrq between '2016-07-01' and '2016-07-31'

❺ 如何用SQL计算同比

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

❻ SQL里怎么查询销售同比与环比

这里有个同比和环比的例子。好好研究下就知道了。表结构如下:
ID DepartName(部门) Sales(销售量) SalesDate(销售日期)
1 营销一部 300 2006-7-1
2 营销二部 500 2006-7-1
3 营销三部 800 2006-8-1
4 营销一部 600 2006-8-1
5 营销二部 800 2006-8-1
6 营销一部 400 2007-7-1
7 营销二部 800 2007-7-1
8 营销三部 700 2007-8-1
9 营销一部 600 2008-7-1
10 营销二部 300 2008-7-1
要根据要求得到以下数据
1)选择开始年月,结束年月,得到同比数据
eg.开始年月:2006-7 结束:2006-8
获取:
对比年月 DepartName(部门) Sales(销售总量) 上期 差异 差异率
2006-7 营销一部 300 0 300 无穷大
2006-7 营销一部 500 0 500 无穷大
2006-7 营销三部 0 0 0 0
2006-8 .... ....
(2)选择月份 获取环比数据
eg.选择 2008.7
部门 本月销售总量 去年同期 变动 变动率
营销一部 600 0 0 0
营销二部 300 800 -500 (300-800)/800 Code
1--雇员数据
2CREATE TABLE Employee(
3ID int, --雇员编号(主键)
4Name nvarchar(10), --雇员名称
5Dept nvarchar(10)) --所属部门
6INSERT Employee SELECT 1,N'张三',N'大客户部'
7UNION ALL SELECT 2,N'李四',N'大客户部'
8UNION ALL SELECT 3,N'王五',N'销售一部'
9--费用表
10CREATE TABLE Expenses(
11EmployeeID int, --雇员编号
12Date Datetime, --发生日期
13Expenses nvarchar(10), --指标名称
14[Money] decimal(10,2)) --发生金额
15INSERT Expenses SELECT 1,'2004-01-01',N'销售',100
16UNION ALL SELECT 1,'2004-01-02',N'销售',150
17UNION ALL SELECT 1,'2004-12-01',N'销售',200
18UNION ALL SELECT 1,'2005-01-10',N'销售', 80
19UNION ALL SELECT 1,'2005-01-15',N'销售', 90
20UNION ALL SELECT 1,'2005-01-21',N'成本', 8
21UNION ALL SELECT 2,'2004-12-01',N'成本', 2
22UNION ALL SELECT 2,'2005-01-10',N'销售', 10
23UNION ALL SELECT 2,'2005-01-15',N'销售', 40
24UNION ALL SELECT 2,'2005-01-21',N'成本', 8
25UNION ALL SELECT 3,'2004-01-01',N'销售',200
26UNION ALL SELECT 3,'2004-12-10',N'销售', 80
27UNION ALL SELECT 3,'2005-01-15',N'销售', 90
28UNION ALL SELECT 3,'2005-01-21',N'销售', 8
29GO
30
31--统计
32DECLARE @Period char(6)
33SET @Period='200501' --统计的年月
34
35--统计处理
36DECLARE @Last_Period char(6),@Previous_Period char(6)
37SELECT @Last_Period=CONVERT(char(6),DATEADD(Year,-1,@Period+'01'),112),
38 @Previous_Period=CONVERT(char(6),DATEADD(Month,-1,@Period+'01'),112)
39SELECT Dept,Expenses,Name,
40 C_Money,
41 L_Money,
42 L_UP=C_Money-L_Money,
43 L_Prec=CASE
44 WHEN L_Money=0 THEN '----'
45 ELSE SUBSTRING('↓-↑',CAST(SIGN(C_Money-L_Money) as int)+2,1)
46 +CAST(CAST(ABS(C_Money-L_Money)*100/P_Money as decimal(10,2)) as varchar)+'%'
47 END,
48 P_Money,
49 P_UP=C_Money-P_Money,
50 P_Prec=CASE
51 WHEN P_Money=0 THEN '----'
52 ELSE SUBSTRING('↓-↑',CAST(SIGN(C_Money-P_Money) as int)+2,1)
53 +CAST(CAST(ABS(C_Money-P_Money)*100/P_Money as decimal(10,2)) as varchar)+'%'
54 END
55FROM(
56 SELECT a.Dept,b.Expenses,
57 Name=CASE WHEN GROUPING(Name)=1 THEN '<合计>' ELSE a.Name END,
58 C_Money=ISNULL(SUM(CASE CONVERT(char(6),b.Date,112) WHEN @Period THEN b.[Money] END),0),
59 L_Money=ISNULL(SUM(CASE CONVERT(char(6),b.Date,112) WHEN @Last_Period THEN b.[Money] END),0),
60 P_Money=ISNULL(SUM(CASE CONVERT(char(6),b.Date,112) WHEN @Previous_Period THEN b.[Money] END),0)
61 FROM Employee a,Expenses b
62 WHERE a.ID=b.EmployeeID
63 AND CONVERT(char(6),b.Date,112) IN(@Last_Period,@Previous_Period,@Period)
64 GROUP BY a.Dept,b.Expenses,a.ID,a.Name WITH ROLLUP
65 HAVING (GROUPING(a.Name)=0 OR GROUPING(a.ID)=1)
66 AND (GROUPING(a.ID)=0 OR GROUPING(b.Expenses)=0))a
67
68/**//*--结果
69Dept Expenses Name C_Money L_Money L_UP L_Prec P_Money P_UP P_Prec
70------- --------- -------- --------- -------- -------- -------- -------- -------- ------
71大客户部 成本 张三 8.00 .00 8.00 ---- .00 8.00 ----
72大客户部 成本 李四 8.00 .00 8.00 ---- 2.00 6.00 ↑300.00%
73大客户部 成本 <合计> 16.00 .00 16.00 ---- 2.00 14.00 ↑700.00%
74大客户部 销售 张三 170.00 250.00 -80.00 ↓32.00% 200.00 -30.00 ↓15.00%
75大客户部 销售 李四 50.00 .00 50.00 ---- .00 50.00 ----
76大客户部 销售 <合计> 220.00 250.00 -30.00 ↓12.00% 200.00 20.00 ↑10.00%
77销售一部 销售 王五 98.00 200.00 -102.00 ↓51.00% 80.00 18.00 ↑22.50%
78销售一部 销售 <合计> 98.00 200.00 -102.00 ↓51.00% 80.00 18.00 ↑22.50%
79--*/
80
81
82

❼ 同比和环比计算公式

1、环比增长率=(本期数-上期数)/上期数×100%。 反映本期比上期增长了多少;环比发展速度,一般是指报告期水平与前一时期水平之比,表明现象逐期的发展速度。

2、同比增长率=(本期数-同期数)/|同期数|×100%。

(7)sql计算两条数据同比环比扩展阅读:

同比与环比

环比的发展速度是报告期水平与前一时期水平之比,表明现象逐期的发展速度。如计算一年内各月与前一个月对比,即2月比1月,3月比2月,4月比3月……12月比11月,说明逐月的发展程度。如分析抗击"非典"期间某些经济现象的发展趋势,环比比同比更说明问题。

学过统计或者经济知识的人都知道,统计指标按其具体内容、实际作用和表现形式可以分为总量指标、相对指标和平均指标。由于采用基期的不同,发展速度可分为同比发展速度、环比发展速度和定基发展速度。简单地说,就是同比、环比与定基比,都可以用百分数或倍数表示。

定基比发展速度,也简称总速度,一般是指报告期水平与某一固定时期水平之比,表明这种现象在较长时期内总的发展速度。同比发展速度,一般指是指本期发展水平与上年同期发展水平对比,而达到的相对发展速度。环比发展速度,一般是指报告期水平与前一时期水平之比,表明现象逐期的发展速度。

同比和环比,这两者所反映的虽然都是变化速度,但由于采用基期的不同,其反映的内涵是完全不同的;一般来说,环比可以与环比相比较,而不能拿同比与环比相比较;而对于同一个地方,考虑时间纵向上发展趋势的反映,则往往要把同比与环比放在一起进行对照。

❽ 同比和环比的计算公式

同比和环比的计算公式:同比指的是当前月与去年的这个月份的比值,计算公式为:(本月-上年度的本月)/上年度的本月*100%。环比指的是当前月与上个月比值(本月-上个月)/上个月*100%。
同比发展速度主要是为了消除季节变动的影响,用以说明本期发展水平与去年同期发展水平对比而达到的相对发展速度。如,本期2月比去年2月,本期6月比去年6月等。
环比发展速度是报告期水平与前一时期水平之比,表明现象逐期的发展速度。如计算一年内各月与前一个月对比,即2月比1月,3月比2月,4月比3月……12月比11月,说明逐月的发展程度。

❾ 生手求教oracle同比和环比sql语句

substr(t.salarymonth, -2)) "同比",
sum(t.salary) /
(select sum(t1.salary)
from D_MONTH_SALARY t1
where t1.salarymonth =
to_char(to_date(t.salarymonth, 'yyyymm') - 1, 'yyyymm')) "环比"
from D_MONTH_SALARY t
group by t.salarymonth;

❿ 同比和环比计算公式是什么

同比=用今年减去年再除以去年/(本期数-同期数)÷同期数×100% 。

环比=用本月减上月再除以上月/(本期数-上期数)/上期数×100% 。