Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
Добрый день, помогите реализовать запрос. Есть таблица с полями FlightNumber, OperationTime, BorderRoutingID, что соответственно Номер авто, время операции и направление движения (въезд или выезд). Нужно вытащить все номера авто, которые два и более раз подряд выехали и между этими выездами не было въезда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 16:18 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
Функция LAG (или LEAD) вас спасет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 16:59 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
k.I.titovЕсть таблица с полями FlightNumber, OperationTime, BorderRoutingID, что соответственно Номер авто, время операции и направление движения (въезд или выезд). Нужно вытащить все номера авто, которые два и более раз подряд выехали и между этими выездами не было въезда.Хм, запрос то простой, учебная задача? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 16:59 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
Сейчас попробую. Нет не учеба, на работе) sql запросам не обучался, но начальник задачи ставит. Большую часть в состоянии выполнить, в большинстве случаев перевожу все нужные данные в отдельные временые таблицыи их, сравниваю, а тут так не выходит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 17:35 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Тут еще нужно учесть что было два выезда подряд, без въезда... и задать промежуток времени, так как база у меня в сотни миллионов таких машин и если без ограничения по времени запущу, повешу базу. Еще добавил with (nolock) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 17:41 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
Пока так use packdb Select * from spk_Vpassenger_WithoutMV as t2 with (nolock) Where t2.FlightNumber = t1.FlightNumber and t2.OperationTime>t1.OperationTime order by t2.OperationTime ASC) as t2 where t1.OperationTime >'2018-01-27 17:00:00.000' and t2.OperationTime>'2018-01-27 17:00:00.000' and t1.BorderCrossingID =1 and t2.BorderCrossingID =2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 17:53 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
На выходе пустой результат... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 17:55 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
Убрал время в конце, так же пустой результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 17:55 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
Ошибочка,как вот так сейчас use packdb Select * from spk_Vpassenger_WithoutMV as t1 with (nolock) cross apply (select top 1 * from spk_Vpassenger_WithoutMV as t2 with (nolock) where t2.FlightNumber = t1.FlightNumber and t2.OperationTime>t1.OperationTime order by t2.OperationTime ASC) as t2 where t1.OperationTime >'2018-01-27 17:00:00.000' and t2.OperationTime>'2018-01-27 17:00:00.000' and t1.BorderCrossingID =1 and t2.BorderCrossingID =2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 18:00 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
k.I.titovalexeyvg, Тут еще нужно учесть что было два выезда подряд, без въезда... и задать промежуток времени, так как база у меня в сотни миллионов таких машин и если без ограничения по времени запущу, повешу базу. Еще добавил with (nolock)Мой запрос как раз показывает 2 выезда подряд, без въезда. Промежуток времени можно задать, добавив условие для таблицы t1 Скорость будет зависеть от наличия правильного индекса и от указанного диапазона, и не будет зависеть от того, сколько всего миллиардов записей в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 18:23 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
Хорошо. Буду пробовать уже в понедельник, спасибо за помощь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 18:29 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
k.I.titovОшибочка,как вот так сейчасДа, в общем правильно. Единственно, условие t2.OperationTime > ... лишнее, запутает сервер и вас. Для скорости лучше сделать индекс по FlightNumber asc, OperationTime desc И ещё один фильтрованный по OperationTime asc where BorderCrossingID = 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2018, 18:33 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Сейчас на работе, выполняю так каки указано выше, убрал t2.operationtime, и все равно результат нулевой... убираю время совсем, все равно результат ноль.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 10:23 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Я понял... я не совсем точно объяснил. В этой таблице содержится много машин и мне нападет найти такие которые два раза подряд выехали, но между ними сможет бывать уйма машин. Если я правильно понимаю принцип работы этого запроса, то он сравнивает каждую строку со следующей, по этому и результат ноль. А мне нужно, что бы он нашел два номера с направлением въезд без выезда между ними, с учетом того, что между этими выездами может пройти любое время ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 10:28 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за опечатки, печатаю с телефона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 10:29 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
k.I.titov, ну так и сравнивай машину с самой собой в подзапросе.... а не со всему имеющимися в таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 10:30 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, А как это реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 10:53 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
k.I.titov, В запросе уже сравнивается машина сама с собой: Код: sql 1. Только не понятно что за поля: Код: sql 1. ? В начале ведь говорилось о направлении движения BorderRoutingID Если BorderCrossingID так же определяет направление движения, то необходимо чтобы t1.BorderCrossingID и t2.BorderCrossingID были одинаковы и определяли событие выезда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 11:07 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
petre, Я попутал... верно borderroutingid, 1 выезд 2 въезд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 11:10 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
petre, И у себя в sql так же опечатался.... Сейчас проверяю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 11:12 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
petre, Запустил, результат есть, но проверка показала что номера которые есть в результате, то есть машины въезжали между выездами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 11:21 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
k.I.titov, так можно долго "тыкать пальцем в небо".... приводи репрезентативный юзабильный набор тестовых данных, свой вариант запроса и "проблемные" данные, которые твой запрос отрабатывает не так, как ты того ожидал.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 11:24 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
То есть он выдает просто номера, которые имеют два выезда вне зависимости от наличия въезда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 11:27 |
|
||
|
Запрос с интересной выборкой
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхk.I.titov, так можно долго "тыкать пальцем в небо".... приводи репрезентативный юзабильный набор тестовых данных, свой вариант запроса и "проблемные" данные, которые твой запрос отрабатывает не так, как ты того ожидал.... Я мог бы с радостью это сделать, но с на это можно. Попробую так объяснить. Грубо говоря в таблице три записи все трис номером А 111 А 123, время у первой записи 2018.01.01 10:00:00.000, у второй 2018.01.01 11:00:00.000, у третьей 2018.01.01 12:00:00.00, направление соответственно выезд, въезд и выезд то, есть 1,2,1. Запустив этот запрос он увидит что номер А 111 А 123 выехал два раза и выдаст его в результате, не учитывая того, что между ними был въезд. А мне нужно так, что бы он выдал его только при таком раскладе, если у них будет последовательность направлений 1,1,2 соответственно выезд, выезд и въезд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2018, 11:40 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=115&tid=1688312]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 405ms |

| 0 / 0 |
