Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запрос на поиск ближайшего значения к указанной дате
|
|||
|---|---|---|---|
|
#18+
Прошу помочь с запросом. Пишу первый раз на форум, возможно получилось сумбурно, если что поправьте У каждой задачи есть дата начала, окончания задачи (start_date, stop_date) исполнитель (executor) трудоемкость(value) дата ввода значения трудоемкости (create_value) в реальности параметров задачи оч много, собранных из разных таблиц select.. from left join (select.. from) .... left join(select.. from) where create_value between @start_period ans @stop_period результат запроса: NumbeTask_namestart_taskend_taskexecutervaluecreate_value prevfactrez123 test101.07.201801.09.2018 executer 10123 test1 01.07.201801.09.2018executer1 1012.07.2018 00123 test1 01.07.2018 01.09.2018 executer1 15 24.07.2018 1001234 test2 10.07.2018 05.08.2018 executer2 40 20.07.2018 001234 test2 10.07.2018 05.08.2018 executer2 50 04.08.2018 40012345 test3 28.07.2018 01.09.2018 executer3 20 23.08.201800123456test4 1.08.2018. 10.08.2018 executer4 30 05.08.2018 200123456 test4 1.08.2018 10.08.2018 executer4 35 09.08.2018 00 группирую, получаю по каждой задаче одну строку group by task_number,task_name order by task_number использовала функцию LAG (cтолбец prevfact), но т.к. ограничиваю задачи определенным периодом времени, у первого введенного значения prevfact=0 В итоге по каждой задаче надо получить 1 строку, rez 1.для каждой задачи, которые начались в предыдущем периоде (type_task1, type_task2) найти разницу (rez) между ближайшем значением (максимальным) к stop period и ближайшим значением (максимальным), введенным до start period, тем самым необходимо найти затраченную трудоемкость в заданном периоде. 2. для задач типа, которые начались в текущем периоде найти максимальное введенное значение max (value) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 12:54 |
|
||
|
Запрос на поиск ближайшего значения к указанной дате
|
|||
|---|---|---|---|
|
#18+
ret5, я бы начал решение с формулировки требования, например, найти все значения ключей таблицы такой-то, для которых дистанция между датами такой-то группы не превышает такой-то порог или минимальна. Составив требование и убедившись, что оно внутренне непротиворечиво, можно подумать - какими средствами его можно реализовать. пока что требование у Вас не слишком очевидно, Вы описываете только своё решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 14:58 |
|
||
|
Запрос на поиск ближайшего значения к указанной дате
|
|||
|---|---|---|---|
|
#18+
ret5, Не знаю правильно ли я понял, у вас value -это накопительный итог и для того, чтобы рассчитать нужное значение Вам нужны данные, которые вы исключили критерием в where Если это так, то можно использовать OUTER APPLY в котором получить нужное Вам значение и вычесть его из MAX в Вашей выборке или же убрать критерий WHERE и получать значения в агрегатах через CASE, типа MAX(CASE WHEN create_value<@start_period THEN value else 0 end) и MAX(CASE WHEN create_value<@end_period THEN value else 0 end) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 15:20 |
|
||
|
Запрос на поиск ближайшего значения к указанной дате
|
|||
|---|---|---|---|
|
#18+
ret5, Изучите OUTER APPLY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 15:42 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39743574&tid=1688567]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 363ms |

| 0 / 0 |
