首页 > 试题广场 >

牛客每个人最近的登录日期(二)

[编程题]牛客每个人最近的登录日期(二)
  • 热度指数:178816 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛客每天有很多人登录,请你统计一下牛客每个用户最近登录是哪一天,用的是什么设备.
有一个登录(login)记录表,简况如下:
id user_id client_id date
1 2 1 2020-10-12
2 3 2 2020-10-12
3 2 2 2020-10-13
4 3 2 2020-10-13
第1行表示user_id为2的用户在2020-10-12使用了客户端id为1的设备登录了牛客网
。。。
第4行表示user_id为3的用户在2020-10-13使用了客户端id为2的设备登录了牛客网

还有一个用户(user)表,简况如下:
id name
1 tm
2 fh
3 wangchao

还有一个客户端(client)表,简况如下:
id name
1 pc
2 ios
3 anroid
4 h5
请你写出一个sql语句查询每个用户最近一天登录的日子,用户的名字,以及用户用的设备的名字,并且查询结果按照user的name升序排序,上面的例子查询结果如下:
u_n c_n date
fh ios 2020-10-13
wangchao ios 2020-10-13
查询结果表明:
fh最近的登录日期在2020-10-13,而且是使用ios登录的
wangchao最近的登录日期也是2020-10-13,而且是使用ios登录的

示例1

输入

drop table if exists login;
drop table if exists user;
drop table if exists client;
CREATE TABLE `login` (
`id` int(4) NOT NULL,
`user_id` int(4) NOT NULL,
`client_id` int(4) NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id`));

CREATE TABLE `user` (
`id` int(4) NOT NULL,
`name` varchar(32) NOT NULL,
PRIMARY KEY (`id`));

CREATE TABLE `client` (
`id` int(4) NOT NULL,
`name` varchar(32) NOT NULL,
PRIMARY KEY (`id`));

INSERT INTO login VALUES
(1,2,1,'2020-10-12'),
(2,3,2,'2020-10-12'),
(3,2,2,'2020-10-13'),
(4,3,2,'2020-10-13');

INSERT INTO user VALUES
(1,'tm'),
(2,'fh'),
(3,'wangchao');

INSERT INTO client VALUES
(1,'pc'),
(2,'ios'),
(3,'anroid'),
(4,'h5');

输出

fh|ios|2020-10-13
wangchao|ios|2020-10-13
头像 牛客题解官
发表于 2025-03-18 16:25:25
精华题解 这道题目要求我们查询每个用户最近一次登录的日期和所使用的设备,我们要做的事情如下: 1. 确定总体问题 我们需要查询每个用户最近一次登录的日期和所使用的设备,并按用户的名字升序排序。即需要从登录记录表、用户表和客户端表中提取数据,通过用户ID和客户端ID进行连接,并使用窗口函数ROW_NUMBER来 展开全文
头像 牛客题解官
发表于 2025-03-26 16:32:46
精华题解 最近做了阿里的24年春招题,题目如下: 题目分析 在这道题目中,我们需要处理三个表,表中会用到的信息包括: orders(订单表) order_id:订单编号 product_id:产品编号 customer_id:客户编号 quantity:购买数量 products(产品表) 展开全文
头像 牛客题解官
发表于 2025-03-28 14:27:21
精华题解 最近做了京东的24年春招题,题目如下: 题目分析 在这道题目中,我们需要从 play_record_tb 表中找出每个 cid 的最大峰值用户数(peak_uv),并按降序排列,最后输出前三个 cid。表结构如下: cid:内容ID start_time:播放开始时间 end_time:播放结束 展开全文
头像 牛客题解官
发表于 2025-03-21 18:29:46
精华题解 题目描述 我们有两个表: user:包含用户信息,包括用户ID id 和用户名 name。 grade_info:包含积分信息,包括用户ID user_id、积分数量 grade_num 和积分类型 type(add表示增加,reduce表示减少)。 目标是查询出积分最高的用户的ID、名字及其总 展开全文
头像 牛客题解官
发表于 2025-03-31 10:53:41
精华题解 最近做了京东的24年春招题,题目如下: 题目分析 在这道题目中,我们需要从三个表中提取数据:Customers、Orders 和 OrderItems。以下是每个表的结构及字段的汉语意思: Customers(客户表) cust_id:客户ID cust_name:客户名称 Orde 展开全文
头像 SunburstRun
发表于 2020-08-17 17:56:21
先根据用户分组,查出每个用户登录的最新日期(一): select user_id,max(date) from login group by login.user_id ; 查找出来的应该这样的 展开全文
头像 skcmc
发表于 2021-05-08 09:46:30
select user.name, client.name, d datefrom user, client, (select *, max(date) over(partition by user_id) d from login) twhere user.id = t.user_ 展开全文
头像 高质量搬砖人
发表于 2021-02-01 10:30:29
方法)WHERE子句筛选最晚日期 查询结果按照user的name升序排序SELECT u.name AS u_n ,c.name AS c_n ,l.date FROM login l JOIN user u ON l.user_id = u.id JOIN client c ON l.clien 展开全文
头像 此用户名涉嫌违规
发表于 2021-03-30 14:18:28
题目描述:sql语句查询每个用户最近一天登录的日子,用户的名字,以及用户用的设备的名字,并且查询结果按照user的name升序排序。考点:group by 子句常见错误:select 子句中只能存在以下三种元素:常数、聚合函数、group by子句指定列(聚合键)所以下面这么写法错误: select 展开全文
头像 一直上上签X
发表于 2021-07-22 14:33:12
首先明确出要查询的目标: 用户名, ---> 来自于用户表 客户端名, ---> 来自于客户端表 date ---> 来自于login表 然后目标明确,进行三表聚合:SELECT u.name as u_n, c.name as 展开全文
头像 great、DY
发表于 2021-10-14 15:25:46
1 用开窗函数在各分组内以日期降序排名, 2 连接用户表和设备表, 3 where筛选第1步中排名为1的行,就是各分组中日期最晚的行数据 select user.name u_n,client.name c_n,t.date from (select user_id,client_id,date, 展开全文
头像 109号
发表于 2020-12-03 16:51:11
这里关键是要筛选出来最近登陆的日期,再去和user、client两个表联结,最近登陆的条件需要特别注意,可以使用(user_id,date)in的方法,也可以使用联结,在联结时需要使用两个条件,即login.date=a.mdate和login.user_id=a.user_id SELECT us 展开全文
头像 幻想家刘同学
发表于 2021-12-31 11:56:05
# 方法1:根据每个用户的先后登录时间进行排名,时间最晚的排名第1,统计出所有用户排名第1的记录-- 窗口函数 # with t as ( # SELECT u.name u_n,c.name c_n,date # ,dense_rank()over(partition by l.user_ 展开全文
头像 Half-
发表于 2021-07-23 14:30:30
思路:以login为主表连接,找出每个用户的日期排名,从表中筛选rk=1的selectu_n,c_n,datefrom( select u.name u_n ,c.name c_n ,date ,row_number()over(partition by u.name 展开全文
头像 qstalking
发表于 2021-01-25 23:16:26
#不同日期会对应不同的设备。 #本题中用户ID和日期可以确定唯一记录,所以多表关联+where过滤(用户ID,日期) select u.name as u_n         ,c. 展开全文

问题信息

SQL
难度:
447条回答 5057浏览

热门推荐

通过挑战的用户

查看代码

相关试题

牛客每个人最近的登录日期(二)