Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HiveSql-微信运动在好友中的排名

HiveSql-微信运动在好友中的排名

作者头像
数据仓库晨曦
发布于 2024-01-08 07:43:03
发布于 2024-01-08 07:43:03
27202
代码可运行
举报
文章被收录于专栏:数据仓库技术数据仓库技术
运行总次数:2
代码可运行

一、题目

有两个表,朋友关系表user_friend,用户步数表user_steps。朋友关系表包含两个字段,用户id,用户好友的id;用户步数表包含两个字段,用户id,用户的步数

1.用户在好友中的排名

user_friend 数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+----------+------------+
| user_id  | friend_id  |
+----------+------------+
| 1        | 2          |
| 1        | 3          |
| 2        | 1          |
| 2        | 3          |
| 2        | 4          |
| 3        | 1          |
| 3        | 4          |
| 4        | 2          |
| 4        | 3          |
| 5        | 2          |
| 5        | 3          |
| 5        | 4          |
+----------+------------+

user_friend数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+---------------------+-------------------+
| user_steps.user_id  | user_steps.steps  |
+---------------------+-------------------+
| 1                   | 100               |
| 2                   | 95                |
| 3                   | 90                |
| 4                   | 80                |
| 5                   | 10                |
+---------------------+-------------------+

二、题目分析

维度

评分

题目难度

⭐️⭐️⭐️⭐️

题目清晰度

⭐️⭐️⭐️⭐️⭐️

业务契合度

⭐️⭐️⭐️⭐️⭐️

解法分析

1.要求解的是自己在好友中的排名,那么需要有自己和好友的步数,可是好友关系表中只有“好友”,需要加入自己的数据;

2.求排名,需要分组开窗;

3.需要筛选出自己名次的那一行数据;

三、SQL

1.列出好友步数,并将自己步数添加到结果中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--好友步数
select t1.user_id,t1.friend_id,t2.steps
from user_friend t1
join user_steps t2
on t1.friend_id = t2.user_id
union all
-- 自己步数
select user_id,user_id as friend_id,steps
from user_steps

查询结果如下:

2.按照用户分组,给每个用户的“好友”进行排名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select
  tt1.user_id,
  tt1.friend_id,
  tt1.steps,
  row_number()over(partition by tt1.user_id order by tt1.steps desc) as row_num
from
  (
  --好友步数
  select
    t1.user_id,
    t1.friend_id,
    t2.steps
  from user_friend t1 join user_steps t2
    on t1.friend_id = t2.user_id
  union all
  -- 自己步数
  select
    user_id,
    user_id as friend_id,
    steps
  from user_steps
  ) tt1

结果如下,我们最终需要的是红色框出来的行,所以再筛选出来,去掉非必要字段。

3求取最终结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select
	user_id,
	row_num
from
	(
		select
			tt1.user_id,
			tt1.friend_id,
			tt1.steps,
			row_number()over(partition by tt1.user_id order by tt1.steps desc) as row_num
		from
		(
		--好友步数
		select
			t1.user_id,
			t1.friend_id,
			t2.steps
		from user_friend t1 join user_steps t2
		on t1.friend_id = t2.user_id
		union all
		-- 自己步数
		select
			user_id,
			user_id as friend_id,
			steps
		from user_steps
		) tt1
	)tt2
where user_id = friend_id

查询结果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据仓库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
hiveSQL-占据多少个好友的封面
有两个表,朋友关系表user_friend,用户步数表user_steps。朋友关系表包含两个字段,用户id,用户好友的id;用户步数表包含两个字段,用户id,用户的步数
数据仓库晨曦
2024/01/08
1850
hiveSQL-占据多少个好友的封面
腾讯大数据面试SQL-占据好友封面个数
有两个表,朋友关系表user_friend,用户步数表user_steps。朋友关系表包含两个字段,用户id,用户好友的id;用户步数表包含两个字段,用户id,用户的步数
数据仓库晨曦
2024/06/17
1490
腾讯大数据面试SQL-占据好友封面个数
腾讯大数据面试SQL-微信运动步数在好友中的排名
有两个表,朋友关系表user_friend,用户步数表user_steps。朋友关系表包含两个字段,用户id,用户好友的id;用户步数表包含两个字段,用户id,用户的步数.用户在好友中的排名
数据仓库晨曦
2024/06/27
1790
腾讯大数据面试SQL-微信运动步数在好友中的排名
HiveSQL-面试题027 当天活跃用户当前连续活跃天数
有用户登录日志表,包含日期、用户ID,当天是否登录,请查询出当天活跃的用户当前连续活跃天数;
数据仓库晨曦
2024/01/08
2430
HiveSQL-面试题027 当天活跃用户当前连续活跃天数
最强最全面的大数据SQL面试题和答案(由31位大佬共同协作完成)
本套SQL题的答案是由许多大佬共同贡献,1+1的力量是远远大于2的,有不少题目都采用了非常巧妙的解法,也有不少题目有多种解法。本套大数据SQL题不仅题目丰富多样,答案更是精彩绝伦!
五分钟学大数据
2021/12/27
5.2K0
HiveSQL-面试题028 用户中两人一定认识的组合数
有某城市网吧上网记录表,包含字段:网吧id,访客id(身份证号),上线时间,下线时间。
数据仓库晨曦
2024/01/08
1810
HiveSQL-面试题028 用户中两人一定认识的组合数
HiveSQL-面试题031 计算每个用户的受欢迎程度
有好友关系表t_friend_031,记录了user1_id,user2_id的好友关系对。现定义用户受欢迎程度=用户拥有的朋友总数/平台上的用户总数,请计算出每个用户的受欢迎程度。
数据仓库晨曦
2024/01/08
2070
HiveSQL-面试题031 计算每个用户的受欢迎程度
HiveSQL-面试题032 共同使用ip用户检测问题
现有用户登录日志表,记录了每个用户登录的IP地址,请查询共同使用过3个及以上IP的用户对;
数据仓库晨曦
2024/01/08
2300
HiveSQL-面试题032  共同使用ip用户检测问题
HiveSQL-面试题036 向用户推荐好友喜欢的音乐
用户关注表t_follow_036(user_id,follower_id)记录用户ID及其关注的人ID
数据仓库晨曦
2024/01/08
2240
HiveSQL-面试题036  向用户推荐好友喜欢的音乐
postgres多知识点综合案例
1、使用with临时存储sql语句,格式【with as xxx(), as xxx2() 】以减少代码;
西西嘛呦
2021/02/02
3420
SQL总结大厂真题-订单量前3,且存在某个商品购买了2个或以上的用户
现有一张订单表 t_order 有订单ID、用户ID、商品ID、购买商品数量、购买时间,请查出订单量前3,且存在某个商品购买了2个或以上的用户。样例数据如下:
数据仓库晨曦
2024/01/08
3952
SQL总结大厂真题-订单量前3,且存在某个商品购买了2个或以上的用户
经典的SparkSQL/Hive-SQL/MySQL面试-练习题
32.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
大数据学习与分享
2020/10/23
1.3K0
使用hql-统计连续登陆的三天及以上的用户
先对每个用户的登录日期排序,然后拿第n行的日期,减第n-2行的日期,如果等于2,就说明连续三天登录了。
孙晨c
2021/02/25
1.2K0
腾讯大数据面试SQL-向用户推荐好友喜欢的音乐
用户关注表t_follow(user_id,follower_id)记录用户ID及其关注的人ID,请给用户1推荐他关注的用户喜欢的音乐名称
数据仓库晨曦
2024/06/17
1150
腾讯大数据面试SQL-向用户推荐好友喜欢的音乐
「SQL面试题库」 No_95 每次访问的交易次数
题目介绍: 每次访问的交易次数 number-of-transactions-per-visit
不吃西红柿
2023/10/16
1940
腾讯大数据面试SQL-连续登陆超过N天的用户
现有用户登录日志表 t_login_log,包含用户ID(user_id),登录日期(login_date)。数据已经按照用户日期去重,请查出连续登录超过4天的用户ID
数据仓库晨曦
2024/06/27
1590
腾讯大数据面试SQL-连续登陆超过N天的用户
常见大数据面试SQL-近30天连续登陆3天以上次数-非开窗
有用户登录记录,已经按照日期去重。求近三十天,用户连续登录超过3天的次数,一直连续登录算一次,有间隔然后重新计算次数, 要求不能用开窗
数据仓库晨曦
2024/08/27
2190
常见大数据面试SQL-近30天连续登陆3天以上次数-非开窗
字节跳动大数据面试SQL-查询最近一笔有效订单
现有订单表t_order,包含订单ID,订单时间,下单用户,当前订单是否有效,请查询出每笔订单的上一笔有效订单
数据仓库晨曦
2024/06/17
1880
字节跳动大数据面试SQL-查询最近一笔有效订单
你今天玩游戏了吗?游戏道具了解下
某游戏的某促销活动,会向玩家推荐一个道具,同时会得到该道具的折扣券。折扣券无有效期,但购买道具一次后失效。推荐一个新的道具,也会导致旧的折扣券失效。
猴子数据分析
2022/07/13
5870
你今天玩游戏了吗?游戏道具了解下
社交系统中用户好友关系数据库设计
第一步,有一张用户表,表内包含用户的基本信息,比如账号、姓名、性别等信息。这里用tb_user表示用户信息表。
程序新视界
2022/05/09
1.2K0
推荐阅读
相关推荐
hiveSQL-占据多少个好友的封面
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验