在日常工作中我們常常有這樣的需求:統計所有資料區間的資訊。
案例:統計某個**系統中所有登入使用者消費金額大於1000元的,800到1000元的,以及800元以下的人數:
使用者登入表:
商品訂單表:
條件判斷函式
函式作用case expr when v1 then r1 [when v2 then r2... ] [else rn] end
如果expr的值等於v1,v2等,則返回對應位置的then後面的結果,否則返回else後面的結果rn。
ifnull(v1, v2)
如果v1不為null返回v1,否則返回v2
使用mysql中的條件判斷函式:
select count(case when ifnull(total_money, 0) >=1000 then a.customer_id end ) as '大於1000'
,count(case when ifnull(total_money, 0) >=800 and ifnull(total_money, 0)<800 then a.customer_id end ) as '800~1000'
,count(case when ifnull(total_money, 0) <800 then a.customer_id end) as '小於800'
from customer_login as a
left join
(select customer_id, count(order_money) as total_money from order_master group by customer_id) as b
on a.customer_id=b.customer_id;
統計結果如下:
業務流程處理使用MQ進行非同步化
非同步,一切都是可以非同步的。上次阿里雲首席技術架構師古謙來公司做分享的時候說了這麼一句話,我對這句話也印象特別深刻。比如目前下訂單的流程,完全可以非同步化來處理。下訂單就是下訂單,不做額外的不一定100 需要同步處理的業務。這樣做了之後,下訂單的api僅僅就是儲存訂單,就會特別的簡潔跟穩定,其它的...
MySQL常見錯誤處理
1.mysql error 1018 can t read dir of dbname 原因 mysql使用者不是dbname目錄的owner 此時可以 ls l 或 ll 檢視該目錄的詳細資訊,就可發現庫目錄的屬主不是mysql 解決方法 chown r mysql mysql mysql資料庫儲...
mysql分庫分表的常見策略
0mysql集群,將sql請求分發到多個資料庫去,減少sql執行的等到時間 l拆分大資料表位若干表,比如事先建立n張結構相同的表,表名可以按照某種業務hash進行對映。缺點是規則的變化帶來的影響 2利用merge儲存引擎來實現分表 create table if not exists user1 i...