LogoSupport Hub

45 Days Worked

Overview

Calculates the date when an employee reached 45 times their daily hours based on cumulative worked hours.

SQL Code

45_days_worked.sql
--Uses daily hours custom field for determining how many hour are in a day to multiply by 45 to get the target hours.

SELECT 
    E.FILEKEY,
    E.LASTNAME,
    E.FIRSTNAME,
    E.IDNUM,
    F.AsFloat AS DailyHours,
    F.AsFloat * 45.0 AS TargetHours,
    ISNULL(WorkTotals.TotalWorkedHours, 0) AS TotalWorkedHours,

    -- Earliest date reached, or 1900-01-01 if not reached
    CONVERT(date, ISNULL(
        (
            SELECT MIN(C.WorkDate)
            FROM (
                SELECT 
                    P.FILEKEY,
                    CAST(P.EVENTDATE AS date) AS WorkDate,
                    SUM(P.HOURS) AS DailyHours,
                    SUM(SUM(P.HOURS)) OVER (
                        PARTITION BY P.FILEKEY
                        ORDER BY CAST(P.EVENTDATE AS date)
                        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
                    ) AS CumulativeHours
                FROM PAYDESHIST AS P
                WHERE P.FILEKEY = E.FILEKEY
                    AND P.PAYDESNUM IN (1, 2)
                    AND P.EVENTDATE IS NOT NULL
                GROUP BY P.FILEKEY, CAST(P.EVENTDATE AS date)
            ) AS C
            WHERE C.CumulativeHours >= (F.AsFloat * 45.0)
        ), '1900-01-01')
    ) AS DateReached

FROM EMPLOYEES AS E
LEFT JOIN (
    SELECT 
        FILEKEY,
        MAX(ISNULL(AsFloat, 0)) AS AsFloat  -- daily hours
    FROM EMPLOYEEFIELDS
    WHERE FIELDID = 2
    GROUP BY FILEKEY
) AS F
    ON E.FILEKEY = F.FILEKEY
LEFT JOIN (
    SELECT 
        FILEKEY,
        SUM(HOURS) AS TotalWorkedHours
    FROM PAYDESHIST
    WHERE PAYDESNUM IN (1, 2)
    GROUP BY FILEKEY
) AS WorkTotals
    ON E.FILEKEY = WorkTotals.FILEKEY
ORDER BY E.LASTNAME, E.FIRSTNAME;

Content Inventory

  • Doc File: content/docs/reports/employee_information/45_days_worked.mdx
  • SQL Script: SQL/reports/employee_information/45_days_worked.sql