Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Администрирование Oracle Database:
- Установка и настройка базы данных
- Обновление, применение патчей
- Оптимизация, настройка производительности
- Обучение, подготовка персонала, оптимизация
  • Страница:
  • 1
  • 2
  • 3
  • 4

ТЕМА: Задачка для начинающего

Задачка для начинающего 18 дек 2011 06:07 #3667

  • Zuma
  • Zuma аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 72
  • Спасибо получено: 0
В таблице записана инфа об уд.и неуд. попытках подключения к БД (Пользователь, Уд\Неуд, Время). Нужно получить список пользователей, которые совершили подряд три и более неуд. попыток.
USERNAME LOG_RESULT LOG_TIME 
------------------------------ ---------- ------------------------- 
Smith Удачно 15.12.10 
Hacker Неудачно 14.12.10 
Hacker Неудачно 13.12.10 
Hacker Неудачно 12.12.10 
Hacker1 Удачно 11.12.10 
Hacker1 Неудачно 10.12.10 
Hacker1 Удачно 09.12.10 
Hacker1 Неудачно 08.12.10 
Hacker1 Удачно 07.12.10 
Hacker1 Неудачно 06.12.10 
Hacker2 Неудачно 05.12.10
Я так понимаю нужно join-ы использовать, но моих способностей не хватает.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Задачка для начинающего 18 дек 2011 06:09 #3668

  • Super
  • Super аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 58
  • Спасибо получено: 0
Нет, Джойны не нужны
Поиск>stff start_of_group

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Задачка для начинающего 18 дек 2011 06:13 #3670

Как вариант
вычислить в каждой строке lag(LOG_RESULT,1) и lag(LOG_RESULT,2)
отобрать уникальных юзеров.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Задачка для начинающего 18 дек 2011 06:13 #3671

  • Duh
  • Duh аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 75
  • Спасибо получено: 0
select distinct USERNAME
from (
	select t.*, lag(LOG_RESULT) over(partition by username order by LOG_TIME) LOG_RESULT_1
		, lag(LOG_RESULT,2) over(partition by username order by LOG_TIME) LOG_RESULT_2
	from t)
where LOG_RESULT='Неудачно' and LOG_RESULT=LOG_RESULT_1 and LOG_RESULT=LOG_RESULT_2

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Задачка для начинающего 18 дек 2011 06:14 #3672

  • Zuma
  • Zuma аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 72
  • Спасибо получено: 0
Спасибо, уже начал разбираться с LAG-ами, и уже рашение подкинули.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Задачка для начинающего 18 дек 2011 06:15 #3673

  • Zuma
  • Zuma аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 72
  • Спасибо получено: 0
А возможно решить задачу без использования аналитических функций?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3
  • 4