MYSQL 根據不同欄位的彙總相同欄位的總數

2021-09-01 18:22:51 字數 764 閱讀 1489

需求:

彙總乙個使用者不同支付方式的購買的總杯數

buy_num 杯數

pay_code 支付方式

pay_name 支付名稱

pay_status 支付狀態

ms_order 訂單表

ms_user 使用者表

select u.id,pay_name,u.username,

sum(buy_num) as buy_num,

count(if(pay_code = "wxpay", true, null)) as wxpay_count,

count(if(pay_code = "alipay", true, null)) as alipay_count,

sum(if(pay_code = "wxpay", buy_num, 0)) as wxpay,

sum(if(pay_code = "alipay", buy_num, 0)) as alipay

from `ms_user` `u` inner join `ms_order` `od` on `od`.`user_id`=`u`.`id` where `pay_status` = 1

group by `user_id`

通過sum(if(pay_code = "xx", ***, 0))根據不同字段增加彙總

通過count(if(pay_code = "xx", true, null))根據不同字段彙總

mysql欄位彙總

型別 描述int 一種數值型別,值的範圍如下 帶符號的 2147483648 2147483647 不帶符號的0 4294967295 最多十位,所以存手機號是不行的 decimal 一種數值型別,支援浮點數或者小數 double 一種數值型別,支援雙精度浮點數 date yyyymmdd格式的日期...

oracle根據不同條件給字段賦不同的值

話不多說,先貼 declare cursor my cur is select t.empno,t.deptno,t.sal from scott.emp t where t.empno 7698 for update of sal 鎖定sal這一列,不允許其他session更新sal列的資料 nu...

根據表字段值left join 不同的表

首先說下思路吧,搗鼓了好半天,網上找到解決辦法,大概兩種方法 1.在left join 的後面將兩張表union all連線為一張表,並加上 區分表關鍵字 然後根據 區分表關鍵字 篩選我們需要的資料 2.使用兩個left join,每個left join 跟上一張表,並加上 區分表關鍵字 然後在 o...