簡體   English   中英

如何在Mysql中計算百分比?

[英]How to calculate the percentage in Mysql?

我有帶有列Account,OrderNo,Createddate的表LabOrder,該表一個Account包含多個orderno。 但是我的要求是,我想基於CreatedDate來獲取該特定帳戶的記錄,該記錄將當前周與前一周進行比較。

假設帳戶在上周創建了100個訂單,在本周創建了50個訂單,那么我們要通知此特定帳戶,當前周訂單小於或等於前一周訂單。 根據我們的業務要求,我們將電子郵件發送到該特定帳戶,該帳戶的當前周訂單數少於前一周訂單的50%。 我們必須通知該帳戶。

計算與當前周訂單數或前一周訂單數的差額?

如何實現這一要求,哪個更好地獲取記錄。

  1. 使用簡單查詢
  2. 建立檢視
  3. 創建存儲過程

我有以下表格數據:

表名: 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中創建任何存儲過程。 這是我的第一次嘗試。

我正在嘗試創建存儲過程,但面臨很多問題,例如如果查詢返回多個記錄,如何存儲。

如果有人給我一個想法,如果有任何建議,如何創建該存儲過程。

謝謝

我認為存儲過程不是您的情況的理想選擇,因為每次用戶插入一條記錄時,數據庫都必須更新同一周的先前記錄。 我建議您使用視圖來實現目標。 這是我為您提供的解決方案:

  1. 使用以下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) 
  2. 假設視圖的名稱為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM