总结面试:SQL常见面试题-1

yumo6667个月前 (03-30)技术文章94

刚刚走过了金三银四,相信许多小伙伴已经得到了自己心仪的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啦!

相关文章

金三银四,金九银十面试必备的SQL题,你会吗?

金三银四,金九银十是面试的最佳时机,有同学在面试测试岗位时经常遇到一些SQL难题,问到就两眼转动,给面试官一种不靠谱的感觉,这样的面试过程注定是要经历挫折的。老师在这里为大家准备了一些SQL面试经典题...

200场面试总结出的大厂SQL常考题(附答案)

小伙伴们,大家好。今天给大家分享一些在数据分析岗位面试中,常被问到的一些SQL题。首先,大家先思考一下题目,然后再看后面的参考答案。Q1:几种JOIN连接方式的区别?Q2:几种排序窗口函数的区别?Q3...

初学者最热门和棘手的10个T-SQL问题

T-SQL有助于在物理或虚拟实例中创建和管理对象,以及插入、检索、修改和删除数据表。国际标准化组织(ISO)和美国国家标准协会(ANSI)发布的SQL标准定义了一种软件语言,Transact-SQL就...

C#面试宝典 2022年 60个常见的C#面试问题和答案

我们整理了60个常见的C#面试问题和答案,包括初级,中级和高级面试问题。对即将参加面试的同学非常有用,建议收藏研读。许多雇主对只会纸上谈兵的程序员都保持持谨慎态度,特别是没有编程经验但而有学位的人。正...

大厂面试SQL题(三) ——连续登陆(含间隔)(字节)

承继上篇文章 大厂面试SQL题(一) ——连续登陆,阐述了最为简易的连续登录题目。然而,倘若在面试题目中增添难度,将 隔天统计问题 纳入考量,该作何处理呢?沿用第一篇题目的场景实例:(1)存在一张用户...