代码之家  ›  专栏  ›  技术社区  ›  Crazy

如何使用以价格为基础的数量之和的组concat?

  •  0
  • Crazy  · 技术社区  · 6 年前

    id | id_item | qty | price
    1    1         10    1.00
    2    1         15    2.00
    3    1         10    1.00
    4    2         5     2.00
    5    2         5     2.50
    6    3         10    1.00
    7    3         10    1.00
    8    3         5     1.00
    

    这就是我试过的。

    Select id_item, price, sum(qty) as total from sales group by id_item, price having total !=0;
    
    Result
    id_item | qty | price
    1         20    1.00
    1         15    2.00
    2         5     2.00
    2         5     2.50
    3         10    1.00
    

    concat的预期结果

    id_item | qty     | price
    1         20,15     1.00,2.00
    2         5,5       2.00.2.50
    3         10        1.00
    

    我怎样才能得到如图所示的结果?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Gordon Linoff    6 年前

    我认为你需要两个层次的聚合:

    select id_item, group_concat(total order by price) as quantities,
           group_concat(price order by price) as prices
    from (Select id_item, price, sum(qty) as total
          from sales
          group by id_item, price
          having total <> 0
         ) s
    group by id_item;