题解 | #牛客每个人最近的登录日期(六)#
牛客每个人最近的登录日期(六)
http://www.nowcoder.com/practice/572a027e52804c058e1f8b0c5e8a65b4
问题:请你写出一个sql语句查询刷题信息,包括: 用户的名字,以及截止到某天,累计总共通过了多少题,并且查询结果先按照日期升序排序,再按照姓名升序排序,有登录却没有刷题的哪一天的数据不需要输出,
问题拆解:1.只需要表格2passing_number和表格3user
2.统计每天每个name的累积通过题目次数,将表格2passing_number两张同样的表链接在一起,设定筛选条件,左表p1的user_id=右表p2的user_id,and p1.date>=p2.date,然后提取p1的user_id、date,p2的number求和就是累积日期的通过题目数量,
3.把上述和表3user链接,将字段user_id替换成name 即可
4.根据字段name和date分组,再根据顺序排序即可。
SELECT u.name u_n, p1.date, SUM(p2.number) ps_num FROM passing_number p1
JOIN passing_number p2 ON p1.user_id=p2.user_id
JOIN user u ON p1.user_id=u.id
WHERE p1.user_id=p2.user_id AND p1.date>=p2.date
GROUP BY u.name, p1.date
ORDER BY p1.date, u.name

阿里云成长空间 745人发布