[英]How to calculate the percentage in Mysql?
我有帶有列Account,OrderNo,Createddate的表LabOrder,該表一個Account包含多個orderno。 但是我的要求是,我想基於CreatedDate來獲取該特定帳戶的記錄,該記錄將當前周與前一周進行比較。
假設帳戶在上周創建了100個訂單,在本周創建了50個訂單,那么我們要通知此特定帳戶,當前周訂單小於或等於前一周訂單。 根據我們的業務要求,我們將電子郵件發送到該特定帳戶,該帳戶的當前周訂單數少於前一周訂單的50%。 我們必須通知該帳戶。
計算與當前周訂單數或前一周訂單數的差額?
如何實現這一要求,哪個更好地獲取記錄。
我有以下表格數據:
表名: LabOrder
Account orderNo CreatedDate
--------------------------------------
101 13 2016-08-2
102 56 2016-08-9
103 79 2016-08-24
我想要以下數據。 存儲過程將比較當前周和上周的訂單,如果減少50%,則將為該客戶減少50%的交易量。
Account CurrentWeekOrder PreviousWeekOrder Difference(%)
---------------------------------------------------------------
101 50 10 -40
102 60 180 120 -> This has to be notified
103 30 25 5 -> No Need to notified
如何為上述詳細信息創建存儲過程? 請幫助我,我是Java開發人員,之前沒有在MySql中創建任何存儲過程。 這是我的第一次嘗試。
我正在嘗試創建存儲過程,但面臨很多問題,例如如果查詢返回多個記錄,如何存儲。
如果有人給我一個想法,如果有任何建議,如何創建該存儲過程。
謝謝
我認為存儲過程不是您的情況的理想選擇,因為每次用戶插入一條記錄時,數據庫都必須更新同一周的先前記錄。 我建議您使用視圖來實現目標。 這是我為您提供的解決方案:
使用以下SQL創建視圖
select account, count(*) as weekorder, week(createDate) as createWeek from laborder where week(createDate) >= week(now()) - 1 ----last week and current week group by account, week(createDate)
假設視圖的名稱為view1,現在您可以查詢所需的內容:
select a.account, a.weekorder as CurrentWeekOrder, b.weekorder as PreviousWeekOrder, a.weekorder / b.weekorder * 100 as Difference from view1 as a left join view1 as b on a.account = b.account and a.createWeek = b.createWeek - 1 where a.createWeek = week(now()) and a.weekorder / b.weekorder * 100 < 50
希望以上方法對您有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.