这道题目要求我们统计不同会员等级的用户访问人次和访问人数,我们要做的事情如下:
1. 确定总体问题
我们需要统计每个会员等级的访问人次和访问人数,并按访问人次降序排序。访问人次是指所有访问记录的数量,访问人数是指不同用户的数量。
2. 分析关键问题
- 连接表:我们需要将
visit_tb
和uservip_tb
表连接起来,以便获取每个访问记录的会员等级信息。 - 统计访问人次:计算每个会员等级的访问记录数量。
- 统计访问人数:计算每个会员等级的不同用户数量。
- 排序输出:按访问人次降序排序。
3. 解决每个关键问题的代码及讲解
步骤1:连接表
我们使用JOIN
将visit_tb
和uservip_tb
表连接起来:
FROM
visit_tb v
JOIN
uservip_tb u ON v.user_id = u.user_id
通过用户ID进行连接,以便获取每个访问记录的会员等级信息。
步骤2:统计访问人次
我们使用COUNT
函数计算每个会员等级的访问记录数量:
COUNT(v.info_id) AS visit_nums
COUNT(v.info_id)
:计算每个会员等级的访问记录数量,表示访问人次。
步骤3:统计访问人数
我们使用COUNT(DISTINCT ...)
函数计算每个会员等级的不同用户数量:
COUNT(DISTINCT v.user_id) AS visit_users
COUNT(DISTINCT v.user_id)
:计算每个会员等级的不同用户数量,表示访问人数,DISTINCT用于去重。
步骤4:排序输出
我们使用ORDER BY
按访问人次降序排序输出结果:
ORDER BY
visit_nums DESC
完整代码
SELECT
u.vip,
COUNT(v.info_id) AS visit_nums,
COUNT(DISTINCT v.user_id) AS visit_users
FROM
visit_tb v
JOIN
uservip_tb u ON v.user_id = u.user_id
GROUP BY
u.vip
ORDER BY
visit_nums DESC;