mysql能使用一条sql实现这样的数据查询吗?
我有一张消息日志表记录用户发送的消息,主要包含字段user_id(用户id),create_time(发送时间)。
现在我希望统计每个用户每天发送前10条消息的平均时间,忽略少于10条的用户,同时当用户当天发送消息超过10条时只取最早发送的前10条数据做分组。我目前的 方案时先按用户分组查出超过10条发言的用户,然后再对分组结果进行处理:sql如下:
select user_id,group_concat(create_time order by create_time asc) ct from msg_log
where create_time > CURDATE() and create_time < DATE_ADD(CURDATE(),INTERVAL 1 day)
having count(*) >= 10
拿到ct字段后取前10个值求平均然后忽略10条后面的数据,这因为group_concat只能取1024个字符可能会出现截断问题,我期望能够直接通过sql实现这样的功能,网络上搜以一圈似乎没有类的需求。