我在mysql数据库中有这样的表。
id | product | warehouse | price | date_shipping
------------------------------------------------
1 | Salt | 15 | 300 | 2017-03-08
2 | Salt | 15 | 300 | 2017-03-09
我想SUM
列价格有几个条件。这是条件。
如果仓库具有相同的ID,则从产品盐中我不想SUM
价格值。
这是我的第二个条件。
id | product | warehouse | price | date_shipping
------------------------------------------------
1 | Salt | 15 | 300 | 2017-03-08
2 | Salt | 18 | 300 | 2017-03-09
如果仓库具有不同的ID,则从产品 salt获取SUM
价格值。
这是我想从查询中得到的结果。
从第一个条件开始:
salt | 15 | 300
从第二个条件:
salt | 15,18 | 600
这是我所做的查询。
SELECT product, GROUP_CONCAT(warehouse SEPARATOR ',') as warehouse, SUM(price)
FROM db_product
有人可以帮我这个吗?谢谢。
答案 0 :(得分:0)
您的问题需要两个聚合。对于仓库中的每个产品,第一个标识具有最早发货日期的记录。然后,需要第二个聚合来对每个产品的仓库进行分组。
SELECT t.product,
GROUP_CONCAT(t.warehouse) AS warehouses,
SUM(t.price) AS total
FROM
(
SELECT t1.product,
t1.warehouse,
t1.price
FROM db_product t1
INNER JOIN
(
SELECT product, warehouse, MIN(date_shipping) AS min_date_shipping
FROM db_product
GROUP BY product, warehouse
) t2
ON t1.product = t2.product AND
t1.warehouse = t2.warehouse AND
t1.date_shipping = t2.min_date_shipping
) t
GROUP BY t.product
<强>输出:强>
在这里演示: