挑战2:用户数据与课程数据的统计
介绍
在实验楼的数据库中有大量的用户学习数据,运营同学我们希望统计用户的学习数据与课程的学习人、学习时间的数据。
运营同学可以根据用户统计数据找出学习时间最高的用户,并给予发送奖励,同时可以根据课程的统计数据找出学习时间最高,学习人数最多的课程。
我们从实验楼的线上数据库中导出部分用户学习的记录,首先我们需要将提供好的数据文件导入数据库中:
wget http://labfile.oss.aliyuncs.com/courses/980/files/week7/shiyanlou-mysqlone.sql
然后将其导入数据库中:
mysql -u root -e "create database shiyanlou"
mysql -u root shiyanlou < shiyanlou-mysqlone.sql
紧接着我们需要创建一个视图,名为 user_all_study_time,通过该视图我们可以统计出有学习记录同学的总学习时间例如:
mysql> select * from user_all_study_time;
+---------+------------+----------------+
| user_id | user_name | all_study_time |
+---------+------------+----------------+
| 679 | LOUef9c1c2 | 1 |
| 962 | LOUd8cc151 | 3 |
| 844 | LOU065c64d | 5 |
| 403 | LOUecf6efb | 6 |
| 616 | LOU486c4b9 | 7 |
.....
.....
+-----+------------+----------------+
该视图需求为:
- 视图名为 user_all_study_time
- 视图有三列:user_id(用户 id)、user_name(用户名)、all_study_time(学习总时间)
同时创建一个课程数据统计的视图,名为 course_statistics,通过该视图我们可以统计出学习人数最多与学习时间最长的课程,例如:
mysql> select * from course_statistics;
+-------------------------------------------------+------------+----------------+
| course_name | user_count | all_study_time |
+-------------------------------------------------+------------+----------------+
| 由浅入深学网络 | 14 | 792 |
| Laravel 项目实战:仿新浪微博Web应用 | 12 | 649 |
| 动手实战学Docker (15个实验+54个视频) | 13 | 633 |
| Java实现在线协作文档编辑 | 10 | 622 |
| Spark 大数据动手实验 | 10 | 559 |
......
......
+-------------------------------------------------+------------+----------------+
该视图需求为:
- 视图名为 course_statistics
- 视图有三列:course_name(课程的名字)、user_count(学习用户人数统计)、all_study_time(学习总时间)
- 以课程的学习时间降序排列
目标
- 创建视图 user_all_study_time 统计用户的总学习时间
- 创建视图 course_statistics 统计课程的数据
知识点
- Mysql 创建视图
- Mysql 联结
- Mysql 分组排序
- Mysql 函数