假设在MySQL数据库中,有一张“新用户注册时间统计表”,记录了用户id和注册时间,具体如下图:
额外说明:
①其中created_time字段的入库规则是:System.currentTimeMillis()/1000;
②该表存储记录数约在450W条左右(即需考虑性能)。
③本表的主键是id字段;
要求:按月进行划分统计每月新增用户数,看看那个月新增用户数多些。格式如: 202001 20000条(即 xxxx年xx月 xx条)
自己尝试的sql语句:SELECT DATE_FORMAT(created_time, '%Y%m'),COUNT(id) FROM my_ids_table GROUP BY DATE_FORMAT(created_time, '%Y%m');
否定原因:一是因为created_time字段的入库规则导致MySQL的DATE_FORMAT()函数失效,函数得到的转换值恒为null;二是考虑到表存储量级,一条sql中写有两次"DATE_FORMAT(created_time, '%Y%m')"的转换执行效率不高。
①其中created_time字段的入库规则是:System.currentTimeMillis()/1000;
②该表存储记录数约在450W条左右(即需考虑性能)。
③本表的主键是id字段;
要求:按月进行划分统计每月新增用户数,看看那个月新增用户数多些。格式如: 202001 20000条(即 xxxx年xx月 xx条)
自己尝试的sql语句:SELECT DATE_FORMAT(created_time, '%Y%m'),COUNT(id) FROM my_ids_table GROUP BY DATE_FORMAT(created_time, '%Y%m');
否定原因:一是因为created_time字段的入库规则导致MySQL的DATE_FORMAT()函数失效,函数得到的转换值恒为null;二是考虑到表存储量级,一条sql中写有两次"DATE_FORMAT(created_time, '%Y%m')"的转换执行效率不高。
三是使用group关键字是进行聚合操作,本表数据量级较大,易占用满内存。
求哪位sql大佬能指点指点,不胜感激!
求哪位sql大佬能指点指点,不胜感激!
全部评论
(4) 回帖