我有一张table:
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);
我想得到一个按周分组的结果集,显示两列。一个是周,另一个是销售活动。如果销售\事件在分组依据后包含1,则销售\事件为1,或销售\事件为0。
这是我的解决方案:
select week, if(max(sales_event) = 1, 1, 0) as sales_event
from mmm
group by week;
我想知道更多解决这个问题的方法。
1条答案
按热度按时间kokeuurv1#
你的解决办法就是走这条路。但是,我建议在聚合函数中移动条件表达式:
这个查询不仅要短一点,而且可以正确处理
sales_event
值不是0
或者1
. 如果,对于给定的一周值1
和2
如果该列中存在,则您的查询将给出0
在第二栏(自max(sales_event)
会回来的2
),而你大概还想1
(因为1
在那一周有效)。