首页 文章

计算每个月SQL的成本

提问于
浏览
0

我需要计算每个项目每个月的成本,项目由任务组成 . 我有一个员工表,任务表和项目表 . 但我不知道如何计算每个月的项目成本,到目前为止我有这个:

SELECT 
    P.PROJECT_NAME, 
    SUM(T.HOURS_WORKED * E.HOURLY_RATE) COST
FROM 
    PROJECT P,
    TASKS T,
    EMPLOYEE E
WHERE 
    E.EMPLOYEE_ID = T.EMPLOYEE_ID
    AND P.PROJECT_ID = T.PROJECT_ID
GROUP BY P.PROJECT_NAME;

但这并不能说明每个月对项目收取多少费用,它只是通过按员工小时费率计算员工的工作小时数来计算总成本 . 在任务表中,我有一个date_worked列,显示日,月和年,但我不知道是否需要使用 .

2 回答

  • 2

    您需要按执行任务的月份对查询进行分组 .

    你最好还是使用JOIN .

    SELECT 
        P.PROJECT_NAME, 
        TRUNC(T.DATE_WORKED, 'month') MONTH,
        SUM(T.HOURS_WORKED * E.HOURLY_RATE) COST
    FROM 
        TASKS T
        INNER JOIN PROJECT P ON P.PROJECT_ID = T.PROJECT_ID
        INNER JOIN EMPLOYEE E ON E.EMPLOYEE_ID = T.EMPLOYEE_ID
    GROUP BY P.PROJECT_NAME, TRUNC(T.DATE_WORKED, 'month');
    
  • 0

    假设您可以使用每个工作rec的日期列date_work

    SELECT P.PROJECT_NAME
                , to_char(date_work, 'YYYY-MM')
                , SUM(T.HOURS_WORKED * E.HOURLY_RATE) COST
        FROM PROJECT P, TASKS T, EMPLOYEE E
        WHERE E.EMPLOYEE_ID = T.EMPLOYEE_ID
        AND P.PROJECT_ID = T.PROJECT_ID
        GROUP BY P.PROJECT_NAME,  to_char(date_work, 'YYYY-MM');
    

    你不应该使用旧的隐式连接sintax但使用显式连接sintax

    SELECT P.PROJECT_NAME
                , to_char(date_work, 'YYYY-MM')
                , SUM(T.HOURS_WORKED * E.HOURLY_RATE) COST
        FROM PROJECT P
        INNER JOIN TASKS T ON P.PROJECT_ID = T.PROJECT_ID
        INNER JOIN EMPLOYEE E ON  E.EMPLOYEE_ID = T.EMPLOYEE_ID
        GROUP BY P.PROJECT_NAME,  to_char(date_work, 'YYYY-MM');
    

相关问题