SQL:有条件求和

时间:2018-08-29 19:29:09

标签: mysql sql laravel eloquent

我建立了一个查询,以将公司的销售统计数据与其他公司进行比较。

简化,就像:

SELECT SUM(CASE WHEN company=foobar THEN sales ELSE 0) as sales_foobar,
SUM(sales) as sales_total, country, year, product FROM sales_table
GROUP BY country, year, product HAVING (the above sum again) > 0

遵从性规则要求,仅显示公司有任何销售的行,而我的代码将丢弃foobar没有销售的行,而由于订单和退款相等,它也会删除销售为0的行。 / p>

现在,我如何才能只获取公司拥有销售数据的行?

3 个答案:

答案 0 :(得分:2)

您可以在mysqlimport: Error: 1083, Field separator argument is not what is expected; check the manual, when using table: wp_posts 子句中计算与公司匹配的行数:

HAVING

答案 1 :(得分:0)

您应该使用Where:

   SELECT SUM(CASE WHEN company=foobar THEN sales ELSE 0) as sales_foobar,
    SUM(sales) as sales_total, country, year, product 
    FROM sales_table
    Where sales > 0
    GROUP BY country, year, product HAVING (the above sum again) > 0

答案 2 :(得分:0)

根据您的问题,假设company ='foobar; 您几乎只在代码中完成了答案。因此,如果您需要除此以外的任何其他特定条件,请告诉我。我会编辑答案。

SELECT 
    SUM (CASE WHEN company='foobar' THEN sales ELSE 0 end) as sales_foobar,
    SUM(sales) as sales_total, 
    country, 
    year, 
    product 
        FROM sales_table
            GROUP BY country, year, product 
                HAVING SUM (CASE WHEN company='foobar' THEN sales ELSE 0 end) > 0

enter image description here