• SQL练习题43:牛客每天有很多人登录,请你统计一下牛客每个用户查询刷题信息,包括: 用户的名字,以及截止到某天,累计总共通过了多少题。 不存在没有登录却刷题的情况,但是存在登录了没刷题的情况,不会存在刷题表里面,有提交代码没有通过的情况,但是会记录在刷题表里,只不过通过数目是0。


    题目:

    牛客每天有很多人登录,请你统计一下牛客每个用户查询刷题信息,包括: 用户的名字,以及截止到某天,累计总共通过了多少题。 不存在没有登录却刷题的情况,但是存在登录了没刷题的情况,不会存在刷题表里面,有提交代码没有通过的情况,但是会记录在刷题表里,只不过通过数目是0。
    有一个登录(login)记录表,简况如下:

    第1行表示id为2的用户在2020-10-12使用了客户端id为1的设备登录了牛客网
    。。。
    第5行表示id为3的用户在2020-10-13使用了客户端id为2的设备登录了牛客网


    有一个刷题(passing_number)表,简况如下:

    第1行表示id为2的用户在2020-10-12通过了4个题目。
    。。。
    第3行表示id为1的用户在2020-10-13提交了代码但是没有通过任何题目。
    第4行表示id为4的用户在2020-10-13通过了2个题目


    还有一个用户(user)表,简况如下:




    请你写出一个sql语句查询刷题信息,包括: 用户的名字,以及截止到某天,累计总共通过了多少题,并且查询结果先按照日期升序排序,再按照姓名升序排序,有登录却没有刷题的哪一天的数据不需要输出,上面的例子查询结果如下:


    查询结果表明:
    fh在2020-10-12为止,总共通过了4道题,输出为4
    wangchao在2020-10-12为止,总共通过了1道题,总计为1
    tm在2020-10-12为止只登陆了没有刷题,故没有显示出来
    tm在2020-10-13为止刷了题,但是却没有通过任何题目,总计为0
    wangchao在2020-10-13通过2道,但是加上前面2020-10-12通过1道,故在2020-10-13为止总共通过了3道题,总计为3

    程序

    SELECT u.name AS u_n, p1.date AS date, SUM(p2.number) AS ps_num
    FROM passing_number AS p1
    INNER JOIN passing_number AS p2
    ON p1.user_id = p2.user_id
    AND p2.date <= p1.date
    INNER JOIN user AS u
    ON u.id = p1.user_id
    GROUP BY p1.date, u.name
    ORDER BY p1.date, u.name;
    
  • 相关阅读:
    UTF8 GBK UTF8 GB2312 之间的区别和关系
    error
    adb
    没有在Manifest.xml中注册Activity
    office 2003打开2007版文件插件(附官方下载地址): compatibility pack for the 2007 office system
    R包MetaboAnalystR安装指南(Linux环境非root)
    R合并数据框有重复匹配时只保留第一行
    质谱行业介绍
    蛋白质组学数据分析——(1)原理
    [R报错] Kruskalwallis test 所有组的层次都必需是有限的
  • 原文地址:https://www.cnblogs.com/zhuozige/p/13909194.html
Copyright © 2020-2023  润新知