Estoy trabajando en la creación de una consulta SQL que extraerá registros de una tabla en función del valor de dos funciones agregadas. Estas funciones agregadas están extrayendo datos de la misma tabla, pero con diferentes condiciones de filtro. El problema con el que me encuentro es que los resultados de las SUM son mucho más grandes que si solo incluyese una función SUMA. Sé que puedo crear esta consulta utilizando tablas temporales, pero me pregunto si existe una solución elegante que requiera solo una consulta.Múltiples funciones agregadas en una consulta SQL de la misma tabla usando condiciones diferentes
He creado una versión simplificada para demostrar el problema. Aquí están las estructuras de tabla:
EMPLOYEE TABLE
EMPID
1
2
3
ABSENCE TABLE
EMPID DATE HOURS_ABSENT
1 6/1/2009 3
1 9/1/2009 1
2 3/1/2010 2
Y aquí es la consulta:
SELECT
E.EMPID
,SUM(ATOTAL.HOURS_ABSENT) AS ABSENT_TOTAL
,SUM(AYEAR.HOURS_ABSENT) AS ABSENT_YEAR
FROM
EMPLOYEE E
INNER JOIN ABSENCE ATOTAL ON
ATOTAL.EMPID = E.EMPID
INNER JOIN ABSENCE AYEAR ON
AYEAR.EMPID = E.EMPID
WHERE
AYEAR.DATE > '1/1/2010'
GROUP BY
E.EMPID
HAVING
SUM(ATOTAL.HOURS_ABSENT) > 10
OR SUM(AYEAR.HOURS_ABSENT) > 3
Cualquier idea sería muy apreciada.
Es un poco confuso. En base a los datos dados, ¿cuál es su resultado esperado? – Raja