sql 面试有哪些经典问题会容易比较出现?

说白了,SQL面试中气象站之类的问题就是为了测试你的联接表、排序、取极值的能力。
例如,要找到温度最高的观测站,内核必须链接一个站表,然后按温度倒序选择前三个站。

我们先来说说最重要的事情。
去年我们开始一个天气项目时,我们发现简单地使用 ORDER BY temp DESC LIMIT 3 就足够了,但有一个陷阱:如果多个站点在相同温度下并列第一,单独使用 LIMIT 会导致随机选择三个,并且必须添加 DENSE_RANK() 才能准确排名。
还有一点需要注意的是字段命名。
如果观测站表和记录表的字段名重名,例如Station_id,则必须使用表名和完全限定字段名,否则会报错。
还有一个更重要的细节。
例如,如果标头需要城市名称,请务必使用 INNER JOIN 来连接站点信息表并使用 city_name 字段。

一开始我以为按月GROUP BY就足以计算降水量了,但后来发现这是错误的。
我必须先使用 SUM(precipitation) 进行聚合,然后使用 ORDER BY SUM DESC 否则结果会很混乱。
等等,还有别的事。
如果数据量很大,比如几百万条记录,把LIMIT放在前面效率更高,因为排序后只取前3 条记录,不需要计算整个表。

一个简单的陷阱提醒:统计各个城市的人口时,如果城市名中含有空格或特殊字符,分组前必须使用TRIM(city_name)或REPLACE,否则统计结果会随机分割。

建议多练习窗口函数。
例如,要查找第二高的工资,请使用 DENSE_RANK() OVER (ORDER BY pay DESC) 进行排名。
更直观比子查询清晰。
您认为使用 CASE WHEN 处理相关评级的场景是不是很多?

几道经典的SQL面试题讲解

老兄,这些 SQL 问题让我头疼。
采访时回过头来看,但更害怕突然间复杂的联系。
告诉我,您对以下哪个问题感到最舒服?
去年,我在上海一家小工厂面试时,被问到了问题5 的变体。
他说学生的不及格可以从成绩单上看出。
原来他的成绩单和学生名单是分开的,所以他必须先加入,然后再加入哪里。
当时我很困惑,因为我在练习中从来没有遇到过这样的事情。
最后我当场瞎想,问道:“这个分数是从哪张桌子上来的?”面试官愣了一下,然后说是在score_table里。
嘿伙计们,我们马上进入代码吧,但是写代码其实并不顺利。

我之前为老板计算过问题 8 的绩效改进情况。
他询问去年哪个季度的分支机构增幅最大。
我使用了你提到的方法,首先过滤了 2 01 9 年,然后使用 MAX 和 MIN 计算每个月之间的差异,找到最大的那个。
不过,当时我是用Excel来做计算的。
之后,我的老板让我尝试使用 SQL,我意识到它有多么有用。
但需要注意的是,分母不能为零,否则会报错。

第9 题每科分数都在7 0多分,但当时我遇到了更难的事情。
他说要寻找所有科目成绩均高于平均水平的学生。
当时我就在想如何计算平均分。
后来面试官告诉我,没关系,超过7 0就算了,用MIN(score)>7 0就可以了,很简单。
不过后来我才知道,难点在于它需要用到窗口函数,这对于我这样的老人来说很难学。

在问题3 中,你问的是一个叫张先生的人,但我当时确实见过他。
但我没有数数,而是检查了他们的联系信息。
当时我写了“张%”和LIKE,但我惊讶地发现她姓张莉。
后来改成了LIKE‘张%’或者LIKE‘张力%’,终于到了。
你说这些SQL问题其实都是陷阱,一不小心就会掉进去。

作为一名老前辈,我已经确定了其中最常用的。
如果您还有其他疑问,请告诉我们。
不过,关于问题 1 0 关于删除重复值的问题,我不会废话,因为我以前没怎么用过它。