powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как выбрать из лога строки с максимальными (последними) датами?
11 сообщений из 11, страница 1 из 1
как выбрать из лога строки с максимальными (последними) датами?
    #39607418
Firef1ash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Новичок в SQL, прошу сильно не пинать :)
Есть задача выбрать время последнего логина из таблицы лога. таблица вида:
LAST_UPDATE EVENT_NAME USER_LOGIN10.11.2017 login ivanov15.12.2017 login ivanov20.12.2017 logout ivanov10.01.2018 login ivanov10.11.2017 login petrov15.12.2017 login petrov20.12.2017 logout petrov10.01.2018 login petrov

Нужно получить в итоге выборку вида:
petrov 10.01.2018
ivanov 10.01.2018

такой вариант верен для данной задачи:
select USER_LOGIN, max(LAST_UPDATE) from LOG where EVENT_NAME='Login' group by USER_LOGIN
...
Рейтинг: 0 / 0
как выбрать из лога строки с максимальными (последними) датами?
    #39607435
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Firef1ash, ты похвалился или что?
...
Рейтинг: 0 / 0
как выбрать из лога строки с максимальными (последними) датами?
    #39607440
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Firef1ashЕсть задача выбрать время последнего логина из таблицы лога. таблица вида:

"выбрать время последнего логина" и "выбрать время последнего логина для каждого пользователя"
ето разные задачи

формально время последнего логина ето 10.01.2018

.....
stax
...
Рейтинг: 0 / 0
как выбрать из лога строки с максимальными (последними) датами?
    #39607464
Firef1ash,

Дай угадаю. Тебе надо так?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with table1(last_update, event_name, user_login) as
(
select to_date('10.11.2017', 'dd.mm.yyyy'),  'login'  , 'ivanov' from dual union all
select to_date('15.12.2017', 'dd.mm.yyyy'),  'login'  , 'ivanov' from dual union all
select to_date('20.12.2030', 'dd.mm.yyyy'),  'logout' , 'ivanov' from dual union all
select to_date('10.01.2018', 'dd.mm.yyyy'),  'login'  , 'ivanov' from dual union all
select to_date('10.11.2017', 'dd.mm.yyyy'),  'login'  , 'petrov' from dual union all
select to_date('15.12.2017', 'dd.mm.yyyy'),  'login'  , 'petrov' from dual union all
select to_date('20.02.2040', 'dd.mm.yyyy'),  'logout' , 'petrov' from dual union all
select to_date('30.01.2018', 'dd.mm.yyyy'),  'login'  , 'petrov' from dual
)
select 
  t.*,
  last_value(last_update) over (partition by user_login order by decode(event_name, 'login', 1, 0), last_update rows between unbounded preceding and unbounded following) last_user_login_dt
from table1 t
order by user_login, last_update;
...
Рейтинг: 0 / 0
как выбрать из лога строки с максимальными (последними) датами?
    #39607670
Firef1ash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
merch,

пардон, забыл знак вопроса после фразы "такой вариант верен для данной задачи:" :)
...
Рейтинг: 0 / 0
как выбрать из лога строки с максимальными (последними) датами?
    #39607673
Firef1ash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
да, именно "выбрать время последнего логина для каждого пользователя"
...
Рейтинг: 0 / 0
как выбрать из лога строки с максимальными (последними) датами?
    #39607687
xenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Firef1ash,
Код: sql
1.
2.
3.
SELECT A.USER_LOGIN,MAX(A.LAST_UPDATE)LASTDATE
FROM LOGTABLE A
GROUP BY A.USER_LOGIN
...
Рейтинг: 0 / 0
как выбрать из лога строки с максимальными (последними) датами?
    #39607691
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Firef1ash,

верен


ps
logout для юсера есть, логина нет, надо выводить?
.....
stax
...
Рейтинг: 0 / 0
как выбрать из лога строки с максимальными (последними) датами?
    #39607697
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xenixFiref1ash,
Код: sql
1.
2.
3.
SELECT A.USER_LOGIN,MAX(A.LAST_UPDATE)LASTDATE
FROM LOGTABLE A
GROUP BY A.USER_LOGIN



автор время последнего логина

....
stax
...
Рейтинг: 0 / 0
как выбрать из лога строки с максимальными (последними) датами?
    #39607722
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При группировке мы просматриваем все записи, затем определяем "последнюю" и выводим.
А можем ли мы начать просмотр с "конца" (по rownum, например) [не order, который у нас начнёт после выборки сортировать] и вернуть первую строку, отвечающую условию?
...
Рейтинг: 0 / 0
как выбрать из лога строки с максимальными (последними) датами?
    #39607781
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo, а ты тролль.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как выбрать из лога строки с максимальными (последними) датами?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]