前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​数仓经典面试互相关注sql题

​数仓经典面试互相关注sql题

作者头像
伊泽瑞尔
发布2022-06-01 08:43:53
8640
发布2022-06-01 08:43:53
举报

t1表: 代表着uid给to_uid 送了礼物,字段如下:

uid,to_uid

a,b

a,c

b,c

t2表:代表uid的关注者follow_uid,字段如下:

uid,follow_uid

a,b

b,c

求输出:

uid,to_uid,relation

说明:

用户uid给用户to_uid刷了礼物,求用户uid与用户to_uid的互相关注类型relation,

0代表两者互不关注,

1代表用户uid关注了用户to_uid,

2代表用户to_uid关注了用户uid,

3代表互相关注。

Solution

代码语言:javascript
复制
SELECT uid,
     to_uid,
     sum(relation) relation
FROM (
-- to_uid关注了uid
SELECT
  t1.uid,
  t1.to_uid,
  CASE WHEN t2.uid IS NULL THEN 0 ELSE 2 END AS relation
FROM t1
LEFT JOIN t2
ON t1.uid = t2.uid
AND t1.to_uid = t2.follow_uid

UNION ALL

-- uid关注了to_uid
SELECT
  t1.uid,
  t1.to_uid,
  CASE WHEN t2.uid IS NULL THEN 0 ELSE 1 END AS relation
FROM t1
LEFT JOIN t2
ON t1.uid = t2.follow_uid
AND t1.to_uid = t2.uid
) t
GROUP BY uid,to_uid;
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据与知识图谱 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档