【问题标题】:How many solutions for this question using group by?这个问题使用 group by 有多少个解决方案?
【发布时间】:2020-09-11 15:09:35
【问题描述】:

我有一张桌子:

create table mmm (day int, week int, sales_event int);
insert into mmm (day, week, sales_event) values (6,1,1), (7,1,1), (13,2,0), (14,2,1), (20,3,0), (21,3,0);

我想得到一个按周分组的结果集,显示两列。一个是星期,另一个是 sales_event。如果sales_event在group by后包含1,那么sales_event为1,或者sales_event为0。

这是我的解决方案:

select week, if(max(sales_event) = 1, 1, 0) as sales_event
from mmm
group by week;

我想知道这个问题的更多解决方案。

【问题讨论】:

    标签: mysql sql select group-by max


    【解决方案1】:

    您的解决方案就是这里的路。但是,我建议将条件表达式移到聚合函数中:

    select week, max(sales_event = 1) as sales_event
    from mmm
    group by week;
    

    这个查询不仅有点短,而且它还能正确处理sales_event 的值不是01 的情况。如果对于给定的一周值1 2 出现在该列中,那么您的查询将在第二列中给出0(因为max(sales_event) 将返回2) ,而您可能仍然想要1(因为1 在该周可用)。

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 2021-02-26
      • 2011-11-20
      • 2021-10-14
      相关资源
      最近更新 更多