如何 select 多个 sum() 数量

how to select multiple sum() quantity

我想 select 订单 table 的总数量 (qty),有 2 类迪拉姆 (kupon_id = 2) 和第纳尔 (kupon_id = 1)

我已经得到 kupon_id = 2 的总和,但我不知道如何得到 kupon_id = 1 的数量总和,这里是示例:

我的模特:

$this->db->join('
(
  SELECT sum(co.qty) as total_dirham,co.user_id
  from ci_order co 
  where co.kupon_id = 2 group by co.user_id
  ) as co
','co.user_id=cug.user_id','left');

我尝试加入相同的 table,但 WHERE 条件不同,但它是错误的:

  $this->db->join('
(
  SELECT sum(co.qty) as total_dirham,co.user_id
  from ci_order co 
  where co.kupon_id = 2 group by co.user_id
  ) as co
','co.user_id=cug.user_id','left');
  $this->db->join('
(
  SELECT sum(co.qty) as total_dinar,co.user_id
  from ci_order co 
  where co.kupon_id = 1 group by co.user_id
  ) as co
','co.user_id=cug.user_id','left');

更新模型:

$this->db->join('
(
  SELECT sum(co.qty) as total,co.user_id, co.kupon_id
  from ci_order co 
  group by co.user_id, co.kupon_id
  ) as co
  
','co.user_id=cug.user_id','left');

结果在不同的行显示了 id 的两个数量,我希望它显示在第纳尔,示例如下:

试试这个:

$this->db->join('
(
  SELECT 
    (select sum(qty) from ci_order where kupon_id = 2 and user_id = a.user_id) as total_dirham, 
    (select sum(qty) from ci_order where kupon_id = 1 and user_id = a.user_id) as total_dinar,
    a.user_id
  from ci_order a
) as co
','co.user_id=cug.user_id','left');

试试这个:

SELECT 
  sum(co.qty) as total_dinar, 
  co.kupon_id, 
  co.user_id   
from 
  ci_order co    
group by 
  co.kupon_id, 
  co.user_id

您应该得到多行,每一行都显示该 kupon ID 的总和。

演示:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=40e2e56df44564a638147b8f6825b36d

(N.B。从提供的数据样本中,不清楚 user_id 来自哪里,里面有什么,或者你是否真的需要按它分组,所以我离开了它在。对于演示,我在一个具有该名称的发明字段中添加了一些虚拟值。)