❶ 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% 。