Mysql 检索其总和小于联接表中一列的行

Mysql 检索其总和小于联接表中一列的行,mysql,sum,Mysql,Sum,我不确定这是否可行,甚至不确定是否明智,但以下是: 我有两个表,一个是时间表表,另一个是授权服务。以下是每个表的基本表结构: TIMESHEETS AUTHORIZED_SERVICES timesheet_id authorized_service_id time_in (unix timestamp) valid_from (unix timestamp) time_out

我不确定这是否可行,甚至不确定是否明智,但以下是:

我有两个表,一个是时间表表,另一个是授权服务。以下是每个表的基本表结构:

TIMESHEETS                          AUTHORIZED_SERVICES
timesheet_id                        authorized_service_id
time_in (unix timestamp)            valid_from (unix timestamp)
time_out (unix timestamp)           valid_until (unix_timestamp)
service_id (int)                    service_id (int)
service_date (unix timestamp)       number_of_units (int)

我需要的是查询timesheets表以检索指定日期范围内的所有结果,其中time\u out-time\u in/60/60的总和我认为您需要的是

按b.service\u id分组


拥有SUM((a.time\u out-a.time\u in)/60/60)hHi Lucia-感谢您的回复,但这只能得到总时间,而不是所有行的累积时间。据我所知,那么您需要的是b.service\u id的
分组
,对吗?有了这个,您就可以按服务id获得累计金额。我不确定这是否是您所需要的。这也是我所想的,但是我缺少了每个时间表行。我认为这是不可能的。谢谢你的想法和帮助!我认为这是不可能的,因为您处于不同的聚合级别。但是,由于我不完全确定这是不可能的,我建议您在另一个问题中问这个问题,只是想知道是否可以在不同聚合级别的查询字段中进行投影。那么,也可以将您的示例包括在内,使其更易于理解。这只是我的意见,只是我想问:)
SELECT
((a.time_out - a.time_in)/60/60) as total_time,
a.service_id,
b.number_of_units,
FROM
timesheets a
LEFT JOIN authorization_services b
ON a.service_id = b.service_id
WHERE 
a.time_in >= UNIX_TIMESTAMP("2013-03-25") AND a.time_out <= UNIX_TIMESTAMP("2013-04-30")
AND a.service_date BETWEEN b.valid_from AND b.valid_until
GROUP BY a.timesheet_id;