Гость
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помощь с запросом / 16 сообщений из 16, страница 1 из 1
28.12.2017, 07:06
    #39577208
guest281217
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
Есть табличка в которой есть числовое поле. Мне нужно найти число 80 и вытащить в результат последнее число 4 перед этой 80. Вся выборка сортируется по дате. Как правильно построить запрос?
...
Рейтинг: 0 / 0
28.12.2017, 07:30
    #39577213
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
Замечательный пример для тренировки телепатии.
...
Рейтинг: 0 / 0
28.12.2017, 07:41
    #39577215
guest281217
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
Вот данные для примера:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
field1  field2  field3
abc	 4	24.12.2017
abc	 4	25.12.2017	
abc	 4	26.12.2017	
abc	 80	28.12.2017
abc	 4	29.12.2017		
abc	 4	30.12.2017
...
Рейтинг: 0 / 0
28.12.2017, 07:50
    #39577222
Помощь с запросом
guest281217,

ну или другими словами, тебе нужно "найти число 4, после которого идет 80, в сортировке по дате" ?
Используй LEAD() over()

Код: sql
1.
2.
3.
4.
5.
6.
7.
select *
  from (
         select t.*
              , lead(field2) over(order by field3) as next_field2
           from t
       ) v
 where next_field2 = 80


Но непонятно, могут ли в таблице быть одновременно несколько строк с числом 80. И если могут, то какую из них рассматривать за "опорную" при формировании итоговой выборки...
...
Рейтинг: 0 / 0
28.12.2017, 07:51
    #39577223
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
guest281217
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
field1  field2  field3
abc	 4	24.12.2017
abc	 4	25.12.2017	
abc	 4	26.12.2017	
abc	 5	27.12.2017
abc	 80	28.12.2017
abc	 4	29.12.2017		
abc	 4	30.12.2017



А вот так может быть?
...
Рейтинг: 0 / 0
28.12.2017, 07:52
    #39577224
Помощь с запросом
982183,

ну да, тоже себе вариант, подходящий под постановку задачи автором топика...
...
Рейтинг: 0 / 0
28.12.2017, 07:57
    #39577225
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
Первичная задача может звучать так:

Есть таблица с уникальной датой в field3 и 4 или уникальной 80 в field2
Отсортированная по дате (field3)
Найти запись, предшествую записи с уникальной 80.
...
Рейтинг: 0 / 0
28.12.2017, 08:04
    #39577226
guest281217
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
Добрый Э - Эх,
Несколько 80 могут быть. Выбирать нужно по самой последней 80
982183,
И так может быть. Нужна именно последняя четверка перед последней 80
...
Рейтинг: 0 / 0
28.12.2017, 08:09
    #39577229
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
Нужна именно последняя четверка НЕПОСРЕДСТВЕННО перед последней 80 ?
Или между этой 4 и последней 80 может быть еще что-то.
...
Рейтинг: 0 / 0
28.12.2017, 08:12
    #39577230
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
Дата уникальна, или могут быть разные числа с одной и той же датой?
...
Рейтинг: 0 / 0
28.12.2017, 08:12
    #39577231
Помощь с запросом
guest281217,

1) во внутреннем запросе отбираем по "top 1" последнюю запись с 80.
2) на верхнем уровне выбираем все записи с 4, предшествующие строке из пункта 1 и из них берем одну, всё тем же "top 1"
...
Рейтинг: 0 / 0
28.12.2017, 08:15
    #39577233
guest281217
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
982183,
Дата уникальна. Между четверкой и восьмидесяткой может быть любое количество записей с другими цифрами.
...
Рейтинг: 0 / 0
28.12.2017, 08:30
    #39577238
Помощь с запросом
guest281217,

Код: sql
1.
2.
3.
4.
5.
select *
  from t
 where field2 = 4
   and field3 < (select field3 from t where field2 = 80 order by field3 desc limit 1)
order by field3 desc limit 1
...
Рейтинг: 0 / 0
29.12.2017, 03:55
    #39577653
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
Добрый Э - Эх
Код: sql
1.
select field3 from t where field2 = 80 order by field3 desc limit 1





Всё время делал вот так:
Код: sql
1.
select max(field3) from t where field2 = 80 
...
Рейтинг: 0 / 0
29.12.2017, 07:19
    #39577665
Помощь с запросом
982183,

я тоже все блюда в ресторане ем одной столовой ложкой. Не смотря на то, что мне в сервировку приносят три ложки, четыре вилки вилки и пять ножей....
...
Рейтинг: 0 / 0
29.12.2017, 07:50
    #39577674
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с запросом
Добрый Э - Эх,
Есть видимо какой-то скрытый смысл, которого я не понимаю.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помощь с запросом / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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