使用查询按星期几计算每小时的平均收入。
SELECT WEEKDAY(date_start_time), SUM(total_income)/SUM(DATEDIFF((hour,
date_start_time, date_end_time) AS avg_income
FROM Deliveries
GROUP BY WEEKDAY(date_start_time)
要了解的事情:
我是否正确地回答了这个问题?
我关心的事情:
1)DATEDIFF只返回一个整数值吗?如果是这样,那么为了更好地估计avg_income这是否意味着我们应该使用DATEDIFF(分钟,......,...),然后从该整数计算带小数位的小时数?
2)过夜工作的人是否需要担心?这个查询会变得多复杂多少?
3)如果我被要求“计算上午9点到下午5点的平均每小时收入”,那么这意味着我需要为每个员工......或者每个小时计算一次(即最终我是按小时或按user_ID分组?
答案 0 :(得分:0)
1)使用timediff()
2)您不仅需要考虑隔夜轮班,而且如果他们工作,您将需要考虑加班费>给定周的周开始日期和周结束日期之间的40小时。这只适用于员工按小时付费的时间(例如,一次半)。如果这是一个因素,那么你将需要卷起袖子,因为它将是一个完整的算法。
3)这取决于你想要找到的平均值(用户,日等),但一个简单的方法就是嵌套你的选择并抓住一个平均()。
select avg(earnings) overall_average from
(select user, [calculated_earnings] as earnings from [table] where [conditions])
select avg(earnings) overall_average from
(select weekday, [calculated_earnings] as earnings from [table] where [conditions])