91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中怎么計算同比和環比

發布時間:2022-06-23 09:25:30 來源:億速云 閱讀:599 作者:iii 欄目:開發技術

這篇文章主要介紹“MySQL中怎么計算同比和環比”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MySQL中怎么計算同比和環比”文章能幫助大家解決問題。

我們先來看看什么是同比,什么是環比:

同比:通常是指今年第n月與去年第n月相比。同比發展速度主要是為了消除季節變動的影響,用以說明本期發展水平與去年同期發展水平對比而達到的相對發展速度。

環比:通常是指表示連續2個單位周期(比如連續兩月)內的量的變化比。環比包括兩種:環比增長速度和環比發展速度。

那同比增長率和環比增長率又如何計算呢:

同比增長率:

同 比 增 長 率 = ( 本 期 數 − 同 期 數 ) / 同 期 數 ∗ 100 % 

環比增長率:

環 比 增 長 率 = ( 本 期 數 − 上 期 數 ) / 上 期 數 × 100 % 

同比和環比的區別

  • 同比是本期與同期做對比,環比是本期與上期做對比。

  • 環比一般是用在月、日很少用在年上,主要是對比很短時間內漲幅程度,不過由于行業差異,比如旅游,會受到淡旺季影響。

  • 同比一般用在相鄰兩年,相同時間段內,查看漲幅程度,一般用在兩年相同月份,很少用在兩月相同日期。

在MySQL中如何計算同比和環比

數據準備

創建商品表并向商品表中添加數據

CREATE TABLE product  (
  `產品ID` varchar(20) NOT NULL,
	  `產品名稱` varchar(20) ,
  `產品單價` int (10)
)
INSERT INTO product VALUES ('C1001','產品A',45);
INSERT INTO product VALUES ('C1002','產品B',52);
INSERT INTO product VALUES ('C1003','產品C',39);

MySQL中怎么計算同比和環比

創建訂單明細表并向訂單明細表中添加數據

CREATE TABLE sales  (
    `訂單ID` int NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `產品ID` varchar(25) NOT NULL ,
	  `銷售數量` int(20) ,
  `銷售時間` timestamp(6) NULL DEFAULT NULL
);
INSERT INTO sales(`產品ID`,`銷售數量`,`銷售時間`) VALUES ('C1001', 15, '2020-06-01 10:10:12');
INSERT INTO sales(`產品ID`,`銷售數量`,`銷售時間`)  VALUES ('C1002',26, '2020-05-02 0:10:12');
INSERT INTO sales (`產品ID`,`銷售數量`,`銷售時間`) VALUES ('C1003', 21, '2020-04-03 0:10:12');
INSERT INTO sales (`產品ID`,`銷售數量`,`銷售時間`) VALUES ('C1003', 23, '2020-04-04 0:10:12');
INSERT INTO sales (`產品ID`,`銷售數量`,`銷售時間`) VALUES ('C1003', 0, '2020-03-05 0:10:12');
INSERT INTO sales (`產品ID`,`銷售數量`,`銷售時間`) VALUES ('C1001', 16, '2020-02-06 3:0:12');
INSERT INTO sales (`產品ID`,`銷售數量`,`銷售時間`) VALUES ('C1002', 32, '2020-01-07 0:10:12');
INSERT INTO sales (`產品ID`,`銷售數量`,`銷售時間`) VALUES ('C1001', 16, '2019-12-08 0:12:24');
INSERT INTO sales (`產品ID`,`銷售數量`,`銷售時間`) VALUES ('C1001', 32, '2019-06-09  0:12:24');
INSERT INTO sales (`產品ID`,`銷售數量`,`銷售時間`) VALUES ('C1002', 17, '2019-05-09 0:12:24');

MySQL中怎么計算同比和環比

計算同比和環比

select  year(c.銷售時間) yy,month(c.銷售時間) mm,     
       sum(c.銷售數量*d.產品單價) ss,
concat(ifnull(abs(round((sum(c.銷售數量*d.產品單價)-ss1)/ss1*100,2)),0),'%') 同比,
concat(ifnull(abs(round((sum(c.銷售數量*d.產品單價)-ss2)/ss2*100,2)),0),'%')  環比
from sales c
left join product d on c.產品ID=d.產品ID
left join (select month(a.銷售時間) mm1,
                    year(a.銷售時間) yy1,
                    sum(a.銷售數量*d.產品單價) ss1
          from sales a
          left join product d on a.產品ID=d.產品ID
          GROUP BY mm1,yy1) a
          on month(c.銷售時間) = a.mm1 
          and a.yy1 = year(c.銷售時間)-1	 
 left join  (select month(a.銷售時間) mm2,
                    year(a.銷售時間) yy2,
                    sum(a.銷售數量*d.產品單價) ss2
             from sales a
		     left join product d on a.產品ID=d.產品ID
              GROUP BY mm2,yy2) b
on (b.yy2 = year(c.銷售時間) and b.mm2+1 = month(c.銷售時間) OR (yy2=year(c.銷售時間)-1 
AND b.mm2 = 12 AND month(c.銷售時間) = 1))
 group by yy, mm
 order by yy,mm asc

sql解析

select  year(c.銷售時間) yy,month(c.銷售時間) mm,     
       sum(c.銷售數量*d.產品單價) ss,
 
# concat函數,mysql字符串拼接,因為同比和環比都是百分數
# ifnull函數,mysql判斷字段是否為空,為空則為0
# abs函數,mysql取絕對值,因為我這里取的都是正數
# round函數,mysql保留幾位小數
concat(ifnull(abs(round((sum(c.銷售數量*d.產品單價)-ss1)/ss1*100,2)),0),'%') 同比,
concat(ifnull(abs(round((sum(c.銷售數量*d.產品單價)-ss2)/ss2*100,2)),0),'%')  環比
from sales c
left join product d on c.產品ID=d.產品ID
 
# 上一年銷售額
left join (select month(a.銷售時間) mm1,
                    year(a.銷售時間) yy1,
                    sum(a.銷售數量*d.產品單價) ss1
          from sales a
          left join product d on a.產品ID=d.產品ID
          GROUP BY mm1,yy1) a
          # 同比月份相同,年份減1
          on month(c.銷售時間) = a.mm1   
          and a.yy1 = year(c.銷售時間)-1	
 
# 今年銷售額 
 left join  (select month(a.銷售時間) mm2,
                    year(a.銷售時間) yy2,
                    sum(a.銷售數量*d.產品單價) ss2
             from sales a
		     left join product d on a.產品ID=d.產品ID
              GROUP BY mm2,yy2) b
          # 環比取數考慮到為一月的情況
on (b.yy2 = year(c.銷售時間) and b.mm2+1 = month(c.銷售時間) OR (yy2=year(c.銷售時間)-1 
AND b.mm2 = 12 AND month(c.銷售時間) = 1))
 group by yy, mm
 order by yy,mm asc

結果:

MySQL中怎么計算同比和環比

除此之外,還想要計算累計銷售的話,可以這樣寫:

select year(銷售時間) yy,month(銷售時間) mm,
sum(銷售數量*b.產品單價) over(order by year(銷售時間) ,month(銷售時間) ) 累計數量 
from sales a
left join product b on a.產品ID=b.產品ID
order by  yy,mm

關于“MySQL中怎么計算同比和環比”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广南县| 和田县| 鲁甸县| 文成县| 琼海市| 昭通市| 茶陵县| 犍为县| 平果县| 聊城市| 拜泉县| 新河县| 盐池县| 聂荣县| 普陀区| 江都市| 镇安县| 霍邱县| 兴仁县| 交城县| 沾化县| 大渡口区| 白山市| 大竹县| 杭锦后旗| 简阳市| 炎陵县| 湛江市| 独山县| 连平县| 揭阳市| 乐昌市| 胶州市| 华安县| 万全县| 余江县| 昔阳县| 酒泉市| 临武县| 石楼县| 南召县|