基于POSTGRESQL,已知有一张表名为day_record,它有以下字段crate_date、work_hours、day_record_type。 其中day_record_type有三种情况:正常、加班、休假。 我需要编写一个SQL语句,每次调用可以返回当前月和前5个月的正常工时之和、加班工时之和、休假工时之和,(例如:当前月是6月,需要返回6月、5月、4月、3月、2月、1月;当前月是2月,需要返回2月,1月,12月,11月,10月,9月)
时间: 2024-04-13 07:30:42 浏览: 15
您可以使用以下 SQL 语句来获取当前月和前5个月的正常工时之和、加班工时之和和休假工时之和:
```sql
SELECT
TO_CHAR(date_trunc('month', create_date), 'YYYY-MM') AS month,
SUM(CASE WHEN day_record_type = '正常' THEN work_hours ELSE 0 END) AS total_normal_hours,
SUM(CASE WHEN day_record_type = '加班' THEN work_hours ELSE 0 END) AS total_overtime_hours,
SUM(CASE WHEN day_record_type = '休假' THEN work_hours ELSE 0 END) AS total_vacation_hours
FROM
day_record
WHERE
date_trunc('month', create_date) >= date_trunc('month', CURRENT_DATE) - INTERVAL '5 months'
GROUP BY
month
ORDER BY
month DESC;
```
请注意,我假设您的工时字段为 "work_hours",记录类型字段为 "day_record_type",日期字段为 "create_date"。如果您的字段名称不同,请相应地进行修改。
这个查询会返回当前月和前5个月的每个月份的正常工时之和、加班工时之和和休假工时之和。
希望这能满足您的需求!如果您有任何其他问题,请随时提问。