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

yumo6661个月前 (03-30)技术文章16

刚刚走过了金三银四,相信许多小伙伴已经得到了自己心仪的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题(一) ——连续登陆,阐述了最为简易的连续登录题目。然而,倘若在面试题目中增添难度,将 隔天统计问题 纳入考量,该作何处理呢?沿用第一篇题目的场景实例:(1)存在一张用户...

网络安全面试题-SQL注入问题总结

一、知识储备类1.SQL与NoSQL的区别?SQL:关系型数据库NoSQL:非关系型数据库存储方式:SQL具有特定的结构表,NoSQL存储方式灵活性能:NoSQL较优于SQL数据类型:SQL适用结构化...

Mysql 常见的10道面试题

1、介绍一下事务的4个特性ACID事务特性含义解释Atomicity原子性同一个事务中的多条语句不可分割,要么全部成功,要么全部失败,不存在部分成功、部分失败Consistency一致性事务从一个一致...

SQL语句常见面试题(上)

描述主键、外键、超键是什么- 超键(super key): 在关系中能唯一标识元组的属性集 - 候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,...

这些MySQL面试题集锦,据说知名互联网公司都用

1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?  2、MySQL的技术特点...