pricing create crear sql database

create - ¿Qué es una buena pregunta ''FizzBuzz'' para un programador de SQL?



sql database azure (5)

Desarrollador SQL o DBA SQL? para un desarrollador algo sobre cursores; la sintaxis es una molestia y una buena pregunta por qué necesitas usarla. Para un dba, dales un cursor y pídeles que lo arreglen;)

Estamos buscando contratar a un programador de SQL y necesitamos una buena pregunta de detección similar a la pregunta de FizzBuzz, pero para SQL.

Si bien es ciertamente posible escribir una solución FizzBuzz usando SQL, creo que el esfuerzo está fuera de lugar. La pregunta de FizzBuzz evalúa los fundamentos de la codificación, tales como bucles, condicionales, resultados y matemáticas básicas. Con SQL, creo que algo relacionado con consultas, uniones, proyecciones y similares sería más apropiado. Pero, al igual que con FizzBuzz, debería ser lo suficientemente simple para que los "buenos" programadores de SQL puedan escribir una solución en papel en un par de minutos.

¿Qué es una buena pregunta ''FizzBuzz'' para un programador de SQL?


Normalmente usamos algo como esto como mínimo para SQL:

Dadas las tablas:

Clientes: CustomerID, CustomerName

Pedidos: OrderID, CustomerID, ProductName, UnitPrice, Cantidad

Calcule el valor total de los pedidos para cada cliente que muestra CustomerName y TotalPrice.

En nuestra opinión, esta es una pregunta bastante simple que requiere una unión en dos tablas, agrupación y una función agregada. Nos sorprende la cantidad de personas con las que hablamos que presumiblemente escriben código de base de datos en su trabajo, no pueden recordar la sintaxis de unión (y no nos importa qué sintaxis usan, el estilo MSSQL o el estilo de Oracle u otra cosa).

Lo que me gusta de esta pregunta es que se presta para el seguimiento de preguntas como

¿Cómo encontrarías a todos los clientes que ordenaron más de $ 1000 en total? ¿Cómo normalizarías estas tablas? ¿Cómo optimizarías las consultas?


Probablemente haría algo que requiera una unión interna, una unión a la izquierda y una cláusula where con una condición AND y OR. También especifique qué campos desea devolver. Vería si reconocen que necesitan una unión izquierda de la descripción del problema, que usan una sintaxis de unión explícita y que usan () para aclarar el significado de y / o. También vería si utilizaron select * aunque especificó qué campos deseaba.


Quédese con fizzbuzz, solo cambie el número de 100 a 10000000 y diga que la solución debe ser razonablemente eficiente.


Se supone que un "FizzBuzz" es tan simple que cualquier persona que pueda programar debería poder resolverlo, y un buen programador debería poder resolverlo casi sin pensar, ¿verdad?

Así que tal vez algo como esto:

Primero, tome dos tablas, Empleados y Departamentos , con una clave externa de Empleados que muestre en qué departamento trabaja cada empleado. (Ejemplo aburrido típico, de casi cualquier libro de texto de la base de datos). Luego, permítales que escriban una consulta que incluya ambas tablas, como "dame los nombres de todos los empleados que trabajan para el departamento de limpieza".

Luego haga exactamente lo mismo, pero no con los empleados que trabajan para los departamentos, sino con los ratones que se comen los gatos, o alguna otra cosa que no sea una copia exacta del departamento de empleados o ejemplos de cursos para estudiantes en el libro de texto de la base de datos.

Si pueden encontrar quién trabaja en el departamento de limpieza, pero no tienen idea de cómo encontrar qué ratones fueron comidos por el gato Tom, ¡no los contraten!