我们希望雇用一名SQL程序员,并且需要一个类似于FizzBuzz question但类似于SQL的良好筛选问题。
虽然使用SQL编写FizzBuzz解决方案当然是可能的,但我认为这种努力是错误的。 FizzBuzz问题评估编码基础,例如循环,条件,输出和基本数学。使用SQL,我认为与查询,连接,投影等相关的东西会更合适。但是,就像FizzBuzz一样,它应该很简单,“好”的SQL程序员可以在几分钟内在纸上编写解决方案。
SQL程序员有什么好的“FizzBuzz”问题?
答案 0 :(得分:11)
我们通常使用这样的东西作为SQL的最低要求:
鉴于表格:
客户:CustomerID,客户名称
订单:OrderID,CustomerID,ProductName,UnitPrice,Quantity
计算显示CustomerName和TotalPrice的每个客户的订单总价值。
在我们看来,这是一个非常简单的问题,需要在两个表,分组和聚合函数上进行连接。我们惊讶于我们与之交谈的人有多少,他们在工作中编写数据库代码时无法记住连接语法(我们从不关心他们使用哪种语法,MSSQL样式或Oracle风格或其他东西)。
我喜欢这个问题,它有助于跟进像
这样的问题您如何找到订购总额超过1000美元的所有客户? 你会如何规范这些表? 您如何优化查询?
答案 1 :(得分:8)
“FizzBuzz”应该是如此简单,任何能够编程的人都应该能够解决它,一个优秀的程序员应该能够解决它几乎没有想到,对吗?
所以也许是这样的:
首先,使用员工中的外键,显示两个表,员工和部门,以显示每个员工所在的部门。 (典型的无聊示例,几乎所有数据库教科书。)然后让他们编写一个涉及两个表的查询,例如“给我清理部门所有员工的姓名”。
然后做同样的事情,但不是那些为部门工作的员工,而是那些被猫吃掉的老鼠,或其他不是数据库中员工部门或学生课程示例的精确副本的东西教科书。
如果他们能找到谁在清洁部门工作,但不知道如何找到被猫汤姆吃掉的老鼠,不要雇用!
答案 2 :(得分:3)
我可能会做一些需要内连接,左连接和带有AND和OR条件的where子句的东西。同时指定要返回的字段。你会看到他们是否认识到他们需要问题描述中的左连接,他们使用显式连接语法,并且他们使用()来表达和/或清除的含义。你也可以看看他们是否使用了select *,即使你指定了你想要的字段。
答案 3 :(得分:0)
坚持使用fizzbuzz,只需将数字从100更改为10000000,并说解决方案必须合理有效。
答案 4 :(得分:-1)
SQL Developer或SQL DBA?对于开发人员而言游标;语法是一种痛苦,一个好的人会质疑为什么你需要使用它。对于一个dba给他们一个光标并要求他们修复它;)