MySQL 滑動訂單問題
滑動訂單問題是指為每個月返回上一年度(季度或月度等)的滑動訂單數。
即:某個月份N,返回從(N-11)月到N月的訂單總數。(架設月份序列中不存在間斷)。
首先建立一個測試表
再插入一些資料
最後返回的結果集應該為:
解決方案
該查詢對monthly_orders表進行自聯接,a表用做下邊界(from_month),b表用做上邊界(to_month)。
聯接條件為:date_add(a.ordermonth, interval 11 month) = b.ordermonth。
例如2010年2月將匹配2011年1月
完成此次自聯接操作之後,需要對訂單進行統計,這時需要在進行一次自聯接,得到範圍內每個月的訂單數量,因此聯接條件為c.ordermonth between a.ordermonth and b.ordermonth 。
按照上述方法,我們還可以統計每個季度訂單的詳情,作為環比和同比增長的比較依據。
即
解決方案:
即:某個月份N,返回從(N-11)月到N月的訂單總數。(架設月份序列中不存在間斷)。
首先建立一個測試表
-
create table monthly_orders(
-
ordermonth date,
-
ordernum int unsigned,
- primary key(ordermonth));
再插入一些資料
-
insert into monthly_orders select '2010-02-01',23;
-
insert into monthly_orders select '2010-03-01',26;
-
insert into monthly_orders select '2010-04-01',24;
-
insert into monthly_orders select '2010-05-01',27;
-
insert into monthly_orders select '2010-06-01',26;
-
insert into monthly_orders select '2010-07-01',32;
-
insert into monthly_orders select '2010-08-01',34;
-
insert into monthly_orders select '2010-09-01',30;
-
insert into monthly_orders select '2010-10-01',31;
-
insert into monthly_orders select '2010-11-01',32;
-
insert into monthly_orders select '2010-12-01',33;
-
insert into monthly_orders select '2011-01-01',31;
-
insert into monthly_orders select '2011-02-01',34;
-
insert into monthly_orders select '2011-03-01',34;
-
insert into monthly_orders select '2011-04-01',38;
-
insert into monthly_orders select '2011-05-01',39;
-
insert into monthly_orders select '2011-06-01',35;
-
insert into monthly_orders select '2011-07-01',49;
-
insert into monthly_orders select '2011-08-01',56;
-
insert into monthly_orders select '2011-09-01',55;
-
insert into monthly_orders select '2011-10-01',74;
-
insert into monthly_orders select '2011-11-01',75;
- insert into monthly_orders select '2011-12-01',14;
最後返回的結果集應該為:
解決方案
-
select
-
date_format(a.ordermonth, '%Y-%m') as from_month,
-
date_format(b.ordermonth, '%Y-%m') as to_month,
-
sum(c.ordernum) as orders
-
from monthly_orders a
-
join monthly_orders b
-
on date_add(a.ordermonth, interval 11 month) = b.ordermonth
-
join monthly_orders c
-
on c.ordermonth between a.ordermonth and b.ordermonth
- group by a.ordermonth,b.ordermonth;
該查詢對monthly_orders表進行自聯接,a表用做下邊界(from_month),b表用做上邊界(to_month)。
聯接條件為:date_add(a.ordermonth, interval 11 month) = b.ordermonth。
例如2010年2月將匹配2011年1月
完成此次自聯接操作之後,需要對訂單進行統計,這時需要在進行一次自聯接,得到範圍內每個月的訂單數量,因此聯接條件為c.ordermonth between a.ordermonth and b.ordermonth 。
按照上述方法,我們還可以統計每個季度訂單的詳情,作為環比和同比增長的比較依據。
即
解決方案:
-
select
-
date_format(a.ordermonth,\'%Y-%m\') as from_month,
-
date_format(b.ordermonth,\'%Y-%m\') as to_month,
-
sum(c.ordernum) as orders
-
from monthly_orders a
-
join monthly_orders b
-
on date_add(a.ordermonth, interval 2 month) = b.ordermonth
-
and month(a.ordermonth) % 3 = 1
-
join monthly_orders c
-
on c.ordermonth between a.ordermonth and b.ordermonth
- group by a.ordermonth,b.ordermonth;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-1248568/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SwipeMenuRecyclerView庫不能滑動問題View
- 微信小程式-能左右滑動的訂單列表微信小程式
- 滑動視窗問題總結
- UIPikerView 省市區三聯滑動,解決滑動崩潰問題UIView
- 滑動視窗最大值問題
- 【OracleEBS】 訂單暫掛問題sql解決OracleSQL
- 滑動視窗的最大值問題
- SpringBoot mysql驅動問題Spring BootMySql
- 滑動視窗法——子串相關問題
- 關於彈窗的內部滑動穿透底層頁面的滑動的問題穿透
- 例子:酒店列表滑動記憶體增大的問題記憶體
- ScrollView巢狀RecyclerView滑動衝突相關問題View巢狀
- PtrClassicFrameLayout與viewpager橫向滑動衝突的問題Viewpager
- PHP+Redis解決實際問題一:訂單限流PHPRedis
- Java如何解決同時出庫入庫訂單號自動獲取問題Java
- 蘋果容器超出內容overflow滑動卡頓問題蘋果
- 滑動視窗專題
- 如何解決快應用頁面滑動卡頓問題
- 曬單活動測試問題
- mysql啟動不了,mysql連線不上,問題排查MySql
- MySQL 問題MySql
- 解決 ScrollView 巢狀 RecyclerView 時,慣性滑動失效的問題View巢狀
- 解決antdesign頁面滑動時下拉框漂浮的問題
- 聊天平臺原始碼,簡單使用 禁止滑動和設定滑動方向原始碼
- 滑動視窗法——Leetcode例題LeetCode
- 用ListView簡單實現滑動列表View
- CollectionView 單個選項卡的滑動View
- 【Flutter 專題】130 圖解 DraggableScrollableSheet 可手勢滑動的選單欄Flutter圖解
- Java自動生成訂單序列號Java
- 從2023濟南K學習滑動視窗中位數問題
- 快應用tabs和video元件滑動事件優先順序問題IDE元件事件
- 券系統設計及券和訂單號使用重複下單問題彙總
- mysql 1130 問題MySql
- DoorDash如何使用ML和最佳化解決訂單派送的排程問題
- Spring狀態機(FSM),讓訂單狀態流轉如絲般順滑Spring
- 聊聊QT新增MySQL驅動依賴的問題QTMySql
- (十)如果實現滑動展示選單效果
- 透明層滑動跟隨導航選單
- 力扣刷題-滑動視窗(字串)力扣字串