用5步法轻松搞定SQL面试题:从问题解读到组合实现

博文视点Broadview

共 4128字,需浏览 9分钟

 · 2023-10-31

👆点击“博文视点Broadview”,获取更多书讯


--文末赠书--


在数据库岗位面试中,SQL查询题常常让很多面试者感到棘手。为了帮助大家顺利通关,这里分享新书《SQL面试宝典:图解数据库求职题(全彩)》中提到的一款实用的SQL面试题解答方法——5步法

通过本文,你将了解如何用这5步法来解答SQL面试题,并轻松搞定数据库岗位面试。  

【案例】用5步法解题:房源评分统计

表1 所示为各城市房源的评分表,表名为“评分表”,含有3个字段:房源号、城市、分数。求分数(满分10 分)在0~5 分、5~7 分、7~9 分、9 分及以上的分别有多少个房源?

表1 评分表

【解题思路】

1. 读懂问题,画出查询结果表

这道面试题是想找出不同分数段的房源有多少,那么我们可以想象着画出SQL 查询结果表,如表2 所示。

表2 查询结果表

2. 拆解问题

为了得到最终的查询结果表,我们可以将问题拆解为下面几个部分。

(1)将“评分表”按照0-5 分、5-7 分、7-9 分、9 分及以上4 个区间进行分组。

(2)对每个区间的房源进行计数。

3. 找出考点

通过问题拆解,可以发现这个题目是“分区间问题”,考查的SQL 知识是“复杂查询”里多条件判断的case 表达式。

4. 分步实现

(1)将“评分表”按照0-5 分、5-7 分、7-9 分、9 分及以上这4 个区间进行分组。“分区间问题”的本质是多条件判断,要想到用SQL 里的case 表达式知识来实现。

case 表达式的用法如下。

(case when 字段1 > 值1 then 新值1when 字段1 < 值1 then 新值2else 新值3 (可省略)end) as 别名

翻译过来就是当字段1 >值1时,取新值1 ;当字段1 <值1时,取新值2;当字段1 =值1时,取新值3。

对应这个面试题,代码如下:

(case when 分数<5 then 房源号 end) as '0-5',(case when 分数>=5 and 分数<7 then 房源号 end) as '5-7',(case when 分数>=7 and 分数<9 then 房源号 end) as '7-9',(case when 分数>=9 then 房源号 end) as '9+'

(2)对每个区间的房源进行计数。

在第(1)步的SQL 语句中,每个case 表达式前面加上计数函数count(),用于统计每个区间的房源数量。例如,区间0-5 的房源数的代码如下:

count(case when 分数<5 then 房源号 end) as '0-5',

对应的逻辑关系如图1 所示。

图1 对应关系

5. 组合实现

把前面两个步骤的SQL 语句组合在一起,就是完整代码,如下所示:

selectcount(case when 分数<5 then 房源号 end) as '0-5',count(case when 分数>=5 and 分数<7 then 房源号 end) as '5-7',count(case when 分数>=7 and 分数<9 then 房源号 end) as '7-9',count(case when 分数>=9 then 房源号 end) '9+'from 评分表;

查询结果如表3 所示,将其填充至题目所要求的“查询结果表”中即可。

表3 查询结果表

这样你就通过SQL 解题的5 个步骤得出了面试题答案。以上就是针对一个真实面试题的全部解题步骤。

在面试中,拿到任何题目都不要慌张,先思考最终结果是怎样一个展现,然后根据最终结果一步步拆解找出对应的知识点,分步实现,最终整合完成。同样,这个解题步骤也适应于解决工作里的实际业务问题。


本书主要内容

  • 了解工作中的常见问题是如何通过 SQL 解决的,真正做到“学以致用”。

  • 49个实战面试题,将每个 SQL 知识点融入面试题中,帮助读者快速通过 SQL 面试,每个面试题均采用“案例分析 + 图文配合 +SQL 语句”的形式进行讲解。

  • 8个实战项目,所涉及的实战解法基本能够解决读者面试中遇到的 90% 的 SQL 问题。


更多SQL面试相关内容请参看《SQL面试宝典:图解数据库求职题(全彩)》一书。



限时五折优惠,快快抢购吧!


     
     

按以下方式与博文菌互动,即有机会获赠图书!

活动方式:在评论区留言参与“你想要面试求职的岗位”“你在SQL面试中遇到的难点是什么”等话题互动,届时会在参与的小伙伴中抽取1名幸运鹅赠送本书一本!

说明:留言区收到回复“恭喜中奖”者将免费获赠本图书,中奖者请在收到通知的2小时内将您的“姓名+电话+快递地址”留言至原评论下方处即可,隐私信息不会被放出,未在规定时间内回复视作自动放弃兑奖资格。

活动时间:截至10月30日开奖。

快快拉上你的小伙伴参与进来吧~~

    
    


     
     
发布:刘恩惠

审核:陈歆懿

      
      
 


如果喜欢本文
欢迎 在看留言分享至朋友圈 三连
<
 PAST · 往期回顾 
>


书单 | 10月新书速递!





浏览 756
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报