SQL题1
relation表结构
字段 | 字段类型 |
---|---|
from_user_id | bigint |
to_user_id | bigint |
说明:都是自增长且唯一,微博的关注关系表
示例
from_user_id | to_user_id | 含义 |
---|---|---|
1 | 2 | 表示1关注2 |
2 | 1 | 表示2关注1 |
求互相关注的关系对
不能用join ,union all ,子查询
可以用having,group by
select
case when from_user_id>to_user_id then to_user_id else from_user_id end as from_user_id1,
case when from_user_id>to_user_id then from_user_id else to_user_id end as to_user_id1
from
relation
group by case when from_user_id>to_user_id then to_user_id else from_user_id end,
case when from_user_id>to_user_id then from_user_id else to_user_id end
having count(concat(from_user_id1,to_user_id1))=2
这个题没想出来,唉
SQL题2
bind表结构
字段 | 字段类型 |
---|---|
user_id | bigint |
bind_obj | string |
date | bigint 时间戳10位 |
求每个user_id最早绑定的bind_obj以及绑定时间
select
user_id,
split(min_date_bind_obj,"_")[1] bind_obj,
split(min_date_bind_obj,"_")[0] date
from
(
select
user_id,
min(concat(date,"_",bind_obj)) min_date_bind_obj
from
bind
group by
user_id
)t1
SQL题2
登陆日志login表结构
字段 | 字段类型 |
---|---|
user_id | bigint |
login_date | string |
示例
user_id | login_date |
---|---|
1 | 2021-01-01 |
1 | 2021-01-02 |
1 | 2021-01-03 |
1 | 2021-01-05 |
1 | 2021-01-06 |
1 | 2021-01-07 |
1 | 2021-01-08 |
1 | 2021-01-09 |
每个用户连续登陆最大天数,开始时间和结束时间
select
user_id,
min_login_date,
max_login_date,
max(login_days) max_login_days
from
(
select
user_id,
sub_time,
max(login_date) max_login_date,
min(login_date) min_login_date,
count(login_date) login_days
from
(
select
user_id,
login_date,
date_sub(login_date,rank) sub_time
from
(
select
user_id,
login_date,
(row_number() over(partition by user_id order by login_date))-1 rank
from
login
)t1
)t2
group by
user_id,sub_time
)t3
group by
user_id,
max_login_date,
min_login_date
部门对实习生要求
上海和北京区别
通过这次面试直接发现了自己的薄弱点,基础不牢,地动山摇,诚不欺我也,也幸亏面试官一直在引导我,否则根本不可能通过一面,对于大数据组件了解不够,对于原理和实践也不够。
我是dyson不只是吹风机,若是对大数据-数据仓库技术感兴趣的可以加我沟通交流,一起进步。VX:daijun1211
ps:若文章侵权、触犯隐私请联系作者删除,谢谢~~