Dada una mesa 'empleados'
employee_id | salary | department_id
-------------+--------+---------------
Solo utilizando SQL encuentre todas las variantes de transferencias de empleados de un departamento a otro, de modo que creció el salario promedio tanto en el departamento de 'salida' como en el de 'llegada'.
PD: Me hicieron la pregunta en una entrevista, que nunca dio una respuesta, y Google es de poca ayuda.
interview-question
Alejandro
fuente
fuente
Respuestas:
Por lo tanto, está buscando empleados que ganen por debajo del promedio en su departamento actual, pero por encima del promedio en su posible nuevo departamento.
Una posible forma de obtener todas las transferencias de empleados que cumplirían esto sería
fuente
employees
. Esto encuentra todos los departamentos a los que podrían transferir (si corresponde) que cumplan con la condición.Dado que esta fue una pregunta de entrevista (y no una pregunta de prueba ), existen algunas posibilidades dependiendo del contexto.
La pregunta está incompleta como se indicó y
no puedoquizás no debería responderse en su forma actual ( consulte la sección ACTUALIZACIÓN a continuación ). ¿Lo que falta? Bueno, por ejemplo:Si se trata más de una tabla OLTP, entonces debería haber una PK / Índice único / restricción única definida en el
employee_id
campo. Y en ese caso, solo habría una entrada poremployee_id
y, por lo tanto, no hay forma de determinar las transferencias (es decir, no hay una "antigua"department_id
registro ).Si se trata más de una tabla OLAP, entonces podría ser una dimensión que cambia lentamente, en cuyo caso habría múltiples
employee_id
registros. Pero, también tendría que serValidFrom
yValidTo
campos de fecha / DATETIME por lo que la salida y llegada de los departamentos pueden ser determinados en su secuencia apropiada. Sin estos campos no hay forma de determinar qué departamento es la salida y cuál es la llegada . Y no saber esa distinción permitiría recuperar registros que son lo contrario de la solicitud.Entonces, ese "contexto" sobre cómo interpretar esta pregunta es la razón por la cual la pregunta se plantea como es.
Olvidó algunos detalles entre la entrevista y preguntar aquí:
Sucede, pero si este es el caso, entonces debe actualizar la pregunta para completar la información que falta, o permanecerá sin respuesta (al menos en términos de obtener una respuesta significativa).
La pregunta ha sido transcrita con precisión aquí, y estos problemas no fueron el entrevistador (s) conocía, ni pretendía, :
En este caso, si estaba al tanto de estos problemas y esperaban una respuesta, puede usar esto como un medio para descartarlos como posible empleador ;-).
La pregunta ha sido transcrita con precisión aquí, y estos problemas fueron sabe que, o destinado por el entrevistador (s):
En este caso, probablemente estaban usando esto como un medio para eliminar a las personas al observar más que la capacidad técnica en bruto. A menudo es muy importante hacer preguntas para ser muy claro el proyecto en el que está trabajando, ya que la mayoría de los usuarios finales y propietarios de productos, etc., no piensan / hablan con detalles técnicos de bajo nivel y a menudo omiten las piezas necesarias. Es importante no asumir, sino volver al origen de la solicitud para obtener una aclaración para que no pierda el tiempo trabajando en la dirección incorrecta.
Recuerde que no está entrevistando para un puesto que simplemente responda preguntas técnicas en el vacío. Usted está entrevistando para un puesto de trabajo en proyectos y siempre habrá ambigüedades y / o información engañosa en lo que se le pide que haga. Un buen entrevistador tratará de comprender su nivel de habilidad y si realmente será productivo. He hecho preguntas como esta al entrevistar a personas para eliminar a las personas que responden bien a las preguntas técnicas, pero que necesitarían demasiado agarre de la mano y terminarían ralentizando al equipo.
ACTUALIZAR:
Solo para aclarar la aclaración para aquellos que sienten que esta es una pregunta de habilidad de consulta simple, interpretada como @Martin lo ha hecho en su respuesta: ni siquiera sabemos si esta es la redacción exacta de la pregunta que se presentó al OP, pero sabemos, en la medida en que podemos confiar en la situación, que esto se dio en una entrevista. Y buenolos entrevistadores hacen preguntas que no solo extraen las habilidades técnicas de los candidatos, sino también sus habilidades no técnicas / "blandas". Bien podría ser que Martin tenga razón en su interpretación de que la pregunta es sobre posibles combinaciones de transferencia futuras (es decir, "a veces un cigarro es solo un cigarro"). Y si esta fuera una pregunta de prueba, me sorprendería que su respuesta no fuera correcta. Pero, esta no es una pregunta de prueba. Claro, podría ser una pregunta de entrevista hecha por alguien que no está tratando de ver qué tipo de persona es el candidato y cómo se desempeñaría en una reunión de diseño donde tales ambigüedades surgen con más frecuencia de lo que la mayoría de las personas notan. Pero no se dio respuesta,hace las cosas (busca en la página "Estás buscando personas que", pero realmente deberías leerlo todo). Entonces, entre dos candidatos que son iguales en todos los sentidos, pero uno asumió la interpretación y fue correcto, mientras que el otro hizo preguntas y luego obtuvo la respuesta correcta, definitivamente iría con el que preguntó primero.
fuente