网站首页 > 文章精选 正文
刚刚走过了金三银四,相信许多小伙伴已经得到了自己心仪的offer,在这里先恭喜大家啦!但可能还有一些小伙伴刚刚开始找工作,作为一名数据分析师,还是想总结一些面试的经验及SQL的笔试面试题给各位小伙伴,希望对大家可以有一些帮助。
今天先总结一些常见的SQL面试题及注意事项,从简到难总结:
一. 列/行转换
1.第一种类型
要点:通过union将不同name对应的学科成绩拆分后合并到一起
语句(可直接复制)
SELECT name,'english' AS subject,english AS score FROM table_1
UNION
SELECT name,'math' AS subject,math AS score FROM table_1
UNION
SELECT name,'music' AS subject,music AS score FROM table_1
2.第二种类型
要点:通过case when将同一学科列拆分成多列,但注意要加sum进行聚合,下面分别展示聚合和未聚合的效果
SELECT
name
,SUM(CASE WHEN subject = 'english' THEN score ELSE 0 END) AS english
,SUM(CASE WHEN subject = 'math' THEN score ELSE 0 END) AS math
,SUM(CASE WHEN subject = 'music' THEN score ELSE 0 END) AS music
FROM table_2
GROUP BY name
二. 格式转换
1.第一种类型
要点:hivesql中可以使用lateral view explode配合split将单元格中的多个值进行拆分多行显示,此例是通过逗号进行分割
SELECT
class,name1
FROM table_3 as tt
LATERAL VIEW EXPLODE(SPLIT(name,','))tt AS name1
2.第二种类型
要点:将多行的数据,按照统一列合并为一行,可以使用group_concat进行拼接
SELECT
class,GROUP_CONCAT(name,',')
FROM table_4
GROUP BY class
三. 查询连续天数大于3天的用户
要点:使用窗口函数排序dense_rank() + 日期相减data_sub()函数,最终使用having count>3的用户
step1:使用dense_rank()进行排序
step2:使用date_sub,并且限制having限制连续登陆次数
SELECT userid,bicoredata.DATEFORMAT(date_sub(bicoredata.DATEFORMAT(log_date),rank_id)),COUNT(1) as cnt
FROM(
SELECT userid,log_date,DENSE_RANK() OVER(PARTITION BY userid ORDER BY log_date) AS rank_id
FROM table_5)t
GROUP BY userid,bicoredata.DATEFORMAT(DATE_SUB(bicoredata.DATEFORMAT(log_date),rank_id))
HAVING cnt >=3
此次的分享就到这里啦,先从几个简单的问题入手,下次会继续分享SQL的相关面试题,希望大家可以尽快找到心仪的offer啦!
猜你喜欢
- 2025-07-01 linkedin/coral 代码速读(download linkedin)
- 2025-07-01 携程酒店推荐模型优化(携程酒店推荐逻辑)
- 2025-07-01 一场pandas与SQL的巅峰大战(四)(pandas.io.sql)
- 2025-07-01 一场pandas与SQL的巅峰大战(五)(sql和pandas谁更快)
- 2025-07-01 3000字解说数据仓库的拉链表(数据拉链处理什么意思)
- 2025-07-01 HBase 初探:架构 + 原理 + 对比 + 实践
- 2025-07-01 数据仓库工具方法-维度表同步 mysql表结构同步到Hive
- 2025-07-01 SQL实用技巧-行列转换(sql中的行转列)
- 2025-07-01 画像笔记7- 非实时标签-统计标签-最近来访标签
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)
- fmt.println (52)