На самом деле то, что я хочу получить, довольно просто, я хочу получить первый вход в систему и последний выход из системы от пользователя в день. Для того, чтобы получить, что у меня есть база данных, где я могу сделать SQLQueries, но я не могу получить желаемый результат.
Я объясню это на следующем примере:
(NAME-LOGIN-LOGOUT)
| AAAAAAAAAAAA | 23/02/2012 10:33:56,323 | 23/02/2012 16:03:10,323
| AAAAAAAAAAAA | 24/02/2012 07:59:55,787 | 24/02/2012 13:32:16,787
| AAAAAAAAAAAA | 24/02/2012 13:34:15,823 | 24/02/2012 15:00:54,823
| AAAAAAAAAAAA | 27/02/2012 08:00:24,283 | 27/02/2012 16:00:14,283
| AAAAAAAAAAAA | 28/02/2012 07:56:26,78 | 28/02/2012 13:09:16,78
| AAAAAAAAAAAA | 28/02/2012 13:09:58,287 | 28/02/2012 15:09:08,287
| AAAAAAAAAAAA | 29/02/2012 07:52:47,82 | 29/02/2012 16:03:37,82
| AAAAAAAAAAAA | 22/02/2012 10:15:25,817 | 22/02/2012 10:24:42,817
| BBBBBBBBBBBB | 20/02/2012 07:22:50,31 | 24/02/2012 14:16:43,31
| CCCCCCCCCCCC | 15/02/2012 07:58:33,777 | 15/02/2012 16:02:53,777
| CCCCCCCCCCCC | 16/02/2012 08:00:56,29 | 16/02/2012 15:03:06,29
| CCCCCCCCCCCC | 17/02/2012 07:57:31,29 | 17/02/2012 16:00:34,29
| CCCCCCCCCCCC | 20/02/2012 08:01:01,82 | 20/02/2012 15:00:09,82
| CCCCCCCCCCCC | 21/02/2012 07:59:57,29 | 21/02/2012 14:40:13,29
Результат, который я хочу получить (например, для пользователя A), используя предложение SQL с атрибутом groupby:
(Результат должен отображать только первый вход в систему и последний выход в день)
USER
{
DATE
{
min(Login);
max(LogOut);
}
}
(NAME-LOGIN-LOGOUT)
AAAAAAAAAAAAA 23/02/2012 10:33:56,323 23/02/2012 16:03:10,323
AAAAAAAAAAAAA 24/02/2012 07:59:55,787 24/02/2012 15:00:54,823
AAAAAAAAAAAAA 27/02/2012 08:00:24,283 27/02/2012 16:00:14,283
AAAAAAAAAAAAA 28/02/2012 07:56:26,78 28/02/2012 15:09:08,287
.....
Я предполагаю, что используется несколько условий выбора или условия, но я не могу заставить его работать.
Буду очень признателен за любую помощь.
Я придумал следующий ответ, но я все еще получаю значения mininum и maximun последней строки, когда делаю группу. Похоже, что сначала создается группа, а затем получают максимальные и минимальные значения. Я хотел бы быть наоборот :), сначала получите максимум и минимум с учетом даты и пользователя, а затем группируйте по пользователю и дате.
SELECT EnterpriseName, LoginDate, LogOutDate, min(LoginTime), max(LogOutTime)
FROM
ipcc_table
WHERE LoginDate=LogOutDate
GROUP BY EnterpriseName,LoginDate;
С наилучшими пожеланиями