一、

image.png

我的答案:

  1. select player_id , device_id from Activity group by player_id having min(event_date)

发现不对。

分析原因

group by和 min()、max() 和group by 在一起用的时候,此时会发现获取到的数据不是
最大/最小的;
问题根源: group by 默认返回每一组的第一条数据(每一组的排序都是按默认顺序排序的)

正确答案

  1. select player_id,device_id
  2. from activity
  3. where
  4. (player_id,event_date) in
  5. (select player_id,min(event_date) from activity group by player_id)

二、SUM()在group by中的使用

当与group by 子句组合时,SUM函数计算GROUP BY子句中指定的每个分组的综合

三、sum和if也可以实现统计

sum(if(xx,1,0))