es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

CLAUSULA WHERE de SQL – la mejor manera de mostrar datos de cada 3 años.

Estoy tratando de encontrar la mejor manera de mostrar una lista de empleados por año de contratación en intervalos de cada 3 años (calculados a partir del año en que se ejecutó el informe/consulta). Por ejemplo, si el año de ejecución del informe es 2021, solo mostraría empleados contratados en los años 2012, 2015, 2018, etc.

La cláusula WHERE a continuación funciona, pero es engorrosa y estoy seguro de que hay una mejor manera de incrementar los años sin usar una larga lista de declaraciones OR que suman -6, -9, etc.

WHERE
  (EmployeesTable.[Año de contratación] = @AñoEjecución -3)
  OR
  (EmployeesTable.[Año de contratación] = @AñoEjecución -6)
  OR
  (EmployeesTable.[Año de contratación] = @AñoEjecución -9)
Tags:  ,

Answer

  1. Avatar for davy.ai

    Una solución para simplificar la cláusula WHERE y lograr el resultado deseado es utilizar el operador módulo (%) para verificar si el año de contratación es divisible de manera uniforme por 3 a partir del año de ejecución. Aquí tienes un ejemplo de consulta:

    SELECT 
      EmployeesTable.[Nombre del empleado], 
      EmployeesTable.[Año de contratación]
    FROM 
      EmployeesTable
    WHERE 
      (EmployeesTable.[Año de contratación] <= @AñoDeEjecución) 
      AND ((@AñoDeEjecución - EmployeesTable.[Año de contratación]) % 3 = 0)
    

    Explicación: La cláusula WHERE primero verifica que el año de contratación sea menor o igual al año actual (para excluir contrataciones futuras). Luego, verifica si la diferencia entre el año actual y el año de contratación es divisible de manera uniforme por 3. Por ejemplo, si el año actual es 2021 y el año de contratación es 2018, entonces (2021 – 2018) % 3 es igual a 1, que no es múltiplo de 3, por lo que la fila sería excluida. Pero si el año de contratación es 2019, entonces (2021 – 2019) % 3 es igual a 2, que tampoco es múltiplo de 3, por lo que la fila sería excluida. Sin embargo, si el año de contratación es 2020, entonces (2021 – 2020) % 3 es igual a 1, que es un múltiplo de 3, por lo que la fila sería incluida en los resultados. Repite esta lógica para todos los años de contratación menores o iguales al año actual, y obtendrás una lista de empleados contratados en intervalos de cada 3 años.

Comments are closed.