使用if条件查询SUM mysql

时间:2017-03-10 06:39:41

标签: mysql

我在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

有人可以帮我这个吗?谢谢。

1 个答案:

答案 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

<强>输出:

enter image description here

在这里演示:

Rextester