[英]Calculate Overtime based on a sum of columns
我想計算每周工作時間超過40小時。
table = shift_log_data
database = shift_logs
Field Type Null Key Default Extra
id int(100) NO PRI NULL auto_increment
admin_hrs decimal(20,2) NO 0.00
shop_hrs decimal(20,2) NO 0.00
fab_hrs decimal(20,2) NO 0.00
paint_hrs decimal(20,2) NO 0.00
vacation_hrs decimal(50,2) NO 0.00
control_hrs decimal(20,2) NO 0.00
test_hrs decimal(20,2) NO 0.00
engine_hrs decimal(20,2) NO 0.00
hydraulic_hrs decimal(20,2) NO 0.00
699_paint varchar(100) NO 0.00
699_shop varchar(100) NO 0.00
maint_hrs varchar(100) NO 0.00
date date NO NULL
name varchar(50) NO NULL
job varchar(50) NO NULL
使用日期字段,需要每周的admin_hrs
到maint_hrs
總計列。
如果小時數大於每周40個小時,請創建一個別名為overtime的別名,該名稱表示剩余的小時數大於40。
我努力了。
SELECT SUM(overtime)
FROM
(
SELECT name,
IF(SUM(test_hrs+fab_hrs+control_hrs+shop_hrs+paint_hrs+engine_hrs+hydraulic_hrs)>40,
SUM(test_hrs+fab_hrs+control_hrs+shop_hrs+paint_hrs+engine_hrs+hydraulic_hrs))-40,
0) AS overtime
FROM shift_log_data
GROUP BY name
) TOTAL_OVERTIME
嘗試這個:
SELECT s.Name, YEAR(s.Date), WEEKOFYEAR(s.date),
IF(SUM(test_hrs+fab_hrs+control_hrs+shop_hrs+paint_hrs+engine_hrs+hydraulic_hrs)>40,
SUM(test_hrs+fab_hrs+control_hrs+shop_hrs+paint_hrs+engine_hrs+hydraulic_hrs))-40,
0
) AS overtime
FROM shift_log_data s
GROUP BY s.Name, YEAR(s.Date), WEEKOFYEAR(s.date);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.