sql中的mysql条件分组

dauxcl2d  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(398)

这应该很容易,但我有麻烦。
我有一个 results 如下所示的表:

store_id    cust_id    spend_ind    pct
200         2          A            0.33
200         2          B            0.33
200         3          A            0.33
300         1          A            0.50
300         100        B            0.50
400         2          A            0.33
400         2          B            0.33
400         5          B            0.33

请注意 pct 每个存储的列总和为1.0。以下是创建此表的代码:

CREATE TABLE results(
    store_id int,
    cust_id int,
    spend_ind char,
    pct float
    );

INSERT INTO results VALUES(200,2,'A',0.33);
INSERT INTO results VALUES(200,2,'B',0.33);
INSERT INTO results VALUES(200,3,'A',0.33);
INSERT INTO results VALUES(300,1,'A',0.50);
INSERT INTO results VALUES(300,100,'B',0.50);
INSERT INTO results VALUES(400,2,'A',0.33);
INSERT INTO results VALUES(400,2,'B',0.33);
INSERT INTO results VALUES(400,5,'B',0.33);

我在创建一个新的类别时,尝试按商店,然后按客户id对结果进行分组 A&B 如果同一客户id同时具有 A 以及 B 特定商店的支出指标。以下是我试图输出的内容:

store_id   spend_ind   pct
200         A&B          0.66
200         A            0.33
300         A            0.50
300         B            0.50
400         A&B          0.66
400         B            0.33

例如,客户2有消费模式 A 以及 B 对于商店200,我们创建了一个新的类别 A&B 这就是 pct 任何有消费模式的客户的列 A 以及 B .

pu82cl6c

pu82cl6c1#

我可以这样说:

select
    store_id,
    cust_id,
    group_concat(spend_ind order by spend_ind separator '&') spend_ind,
    sum(pct) pct
from results
group by store_id, cust_id

您可能希望通过另一个聚合级别按新类别对客户进行分组:

select store_id, spend_ind, sum(pct) pct
from (
    select
        store_id,
        cust_id,
        group_concat(spend_ind order by spend_ind separator '&') spend_ind,
        sum(pct) pct
    from results
    group by store_id, cust_id
) t
group by store_id, spend_ind

db小提琴演示

store_id | spend_ind |  pct
-------: | :-------- | ---:
     200 | A&B       | 0.66
     200 | A         | 0.33
     300 | A         | 0.50
     300 | B         | 0.50
     400 | A&B       | 0.66
     400 | B         | 0.33

相关问题