我的数据库中有4列
UserName,Date,Time,LoginType
UserName is a varchar field
Date is a date field
Time is a time field (in 24 hour format)
LoginType is a varchar field
LoginType可以包含两个字符串“LOGIN”,“SHUTDOWN”
中的一个我希望得到有人登录或关机的平均时间 我也想知道无尽的早期三角洲。
因此,对于这个例子,假设学生必须在8:30之前上课,并且必须在10:30之前登记
因此,我们还假设样本数据如下
George.Lucas 8:45 2011-07-22 LOGIN
Eric.TheRed 9:00 2011-07-22 LOGIN
Dr.Who 9:01 2011-07-22 LOGIN
Dr.Who 11:01 2011-07-22 SHUTDOWN
George.Lucas 11:45 2011-07-22 SHUTDOWN
Eric.TheRed 12:00 2011-07-22 SHUTDOWN
由于
答案 0 :(得分:1)
这将为您提供给定用户在登录和关闭之间的平均时间,即使同一天有多个会话,并假设用户需要在再次登录之前关闭:
SELECT login.UserName,
AVG(shutdown.Date - login.Date)
FROM table login,
table shutdown
WHERE login.UserName = shutdown.UserName
AND login.LoginType = 'LOGIN'
AND shutdown.LoginType = 'SHUTDOWN'
AND shutdown.Date = (SELECT MIN(t.Date)
FROM table t
WHERE t.UserName = login.UserName
AND t.LoginType = 'SHUTDOWN'
AND t.Date > login.Date)
GROUP BY login.UserName;
要找出预期和有效登录/关闭时间之间的差异,您只需要分别从login.Time
和shutdown.Time
减去8:30和10:30。