您现在的位置是:主页 > 数据库技术 > 数据库技术

SQL面试的技巧和陷阱有哪些

IDCBT2022-01-10服务器技术人已围观

简介本篇内容介绍了“SQL面试的技巧和陷阱有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家

本篇内容介绍了“SQL面试的技巧和陷阱有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

提问

要拿下一场SQL面试,最重要的在于尽可能多地提问,以确保自己掌握了给定任务和数据样本的所有细节。理解这些需求有助于节省迭代问题的时间,也有助于更好地处理边缘情况。

许多应聘者会在没有深入理解SQL问题或数据集之前,直接开始解决问题。在笔者指出解决方案中的问题之后,他们不得不反复修改查询,在迭代上浪费了大量时间,甚至到最后都没找到正确的解决方案。

笔者的建议是将SQL面试视为在与业务合作伙伴一起工作,保持这种心态,面试者就会在提供解决方案之前努力收集数据请求的所有需求。

示例

从下表中找出薪资最高的三位职员。

样本:职员薪资表

面试者应该让面试官仔细阐述“前三名”的概念——结果中必须只有三名职员吗?对于并列的处理有何要求?此外,面试者应仔细查看示例职员的数据——薪资字段的数据类型是什么?需要在计算之前清除数据吗?

何种连接

在SQL中,连接经常用于组合来自多个表的信息。共有四种不同类型的连接,但是在大多数情况下,我们只使用自然连接、左连接和全连接,因为右连接并不直观,而且使用左连接很容易重写。在SQL面试中,面试者需要根据给定问题的特定要求,选择正确的连接。

示例

找出每位学生上课的总节数。(已知学生证、姓名和上课次数。)

样本:学生名单和课程数据表

可以注意到,并非所有出现在课程数据表中的学生都存在于学生名单中,这可能是因为这些学生已经毕业(这在事务数据库中非常典型,数据不活跃时就会被删除)。在了解清楚面试官是否希望将不活跃的学生包括在内之后,可以根据情况使用左连接和自然连接两种方式来合并表格。

WITHclass_count AS (     SELECT student_id, COUNT(*) ASnum_of_class     FROM class_history     GROUP BY student_id ) SELECT     c.student_id,     s.student_name,     c.num_of_class FROM class_count c -- CASE 1: include only active students JOIN student s ON c.student_id = s.student_id-- CASE 2: include all students -- LEFT JOIN student s ON c.student_id = s.student_id

GROUP BY

标签:

很赞哦! ()

本栏推荐