我是否正确计算每周的平均收入?

时间:2017-09-30 01:09:18

标签: mysql sql average datediff weekday

data table looks like this

使用查询按星期几计算每小时的平均收入。

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)

要了解的事情:

  • 每次员工进入办公室时,Entry_id都是唯一的密钥
  • 如果员工多次进入办公室,将会有许多相同user_id的记录
  • 完成的任务很可能在此问题中未使用

我是否正确地回答了这个问题?

我关心的事情:

1)DATEDIFF只返回一个整数值吗?如果是这样,那么为了更好地估计avg_income这是否意味着我们应该使用DATEDIFF(分钟,......,...),然后从该整数计算带小数位的小时数?

2)过夜工作的人是否需要担心?这个查询会变得多复杂多少?

3)如果我被要求“计算上午9点到下午5点的平均每小时收入”,那么这意味着我需要为每个员工......或者每个小时计算一次(即最终我是按小时或按user_ID分组?

1 个答案:

答案 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])