如何 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
来自哪里,里面有什么,或者你是否真的需要按它分组,所以我离开了它在。对于演示,我在一个具有该名称的发明字段中添加了一些虚拟值。)
我想 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
来自哪里,里面有什么,或者你是否真的需要按它分组,所以我离开了它在。对于演示,我在一个具有该名称的发明字段中添加了一些虚拟值。)