Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как сконструировать запрос?
|
|||
|---|---|---|---|
|
#18+
Доброе время суток. Пусть есть таблица test из 3-х колонок: Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Необходимо сформировать выборку локальных максимумов, т.е. такие строки: Код: plaintext 1. 2. 3. 4. 5. 6. Вариант: Код: plaintext 1. 2. 3. Когда-то что-то подобное решал, но не помню как. Благодарствую за содержательные советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 10:55 |
|
||
|
Как сконструировать запрос?
|
|||
|---|---|---|---|
|
#18+
Наверное проще функцией на plpgsql последовательно читать таблицу в порядке возрастания даты, сохранять переменные value, value_prev, value_prev_prev, и выдавать строку prev если value < value_prev > value_prev_prev. Или сделать двойной self-join таблиц test, test as test_prev, test as test_next со сдвигом по дате на +-1 позицию, и выбрать только строки удовлетворяющие условию where value > value_prev and value > value_next. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:20 |
|
||
|
Как сконструировать запрос?
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatНаверное проще ... смело. я, честно говоря так и не понял постановку задачи. (в изначальном описании она, мне кажется, отсутствует, а с телепатией у меня сегодня слабо). Ждём-с. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:29 |
|
||
|
Как сконструировать запрос?
|
|||
|---|---|---|---|
|
#18+
assa LeXa NalBatНаверное проще ... смело. я, честно говоря так и не понял постановку задачи. (в изначальном описании она, мне кажется, отсутствует, а с телепатией у меня сегодня слабо). Ждём-с. Из таблицы, содержащей значения, имеющие временную метку и номер серии данных, нужно сформировать выборку значений из каждой последней серии. Номер серии не является уникальным и может сбрасываться, как это видно из приведенного примера. Timestamp, ессно, нет. Ждём-с... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:35 |
|
||
|
Как сконструировать запрос?
|
|||
|---|---|---|---|
|
#18+
jute assa LeXa NalBatНаверное проще ... смело. я, честно говоря так и не понял постановку задачи. (в изначальном описании она, мне кажется, отсутствует, а с телепатией у меня сегодня слабо). Ждём-с. Из таблицы, содержащей значения, имеющие временную метку и номер серии данных, нужно сформировать выборку значений из каждой последней серии. Номер серии не является уникальным и может сбрасываться, как это видно из приведенного примера. Timestamp, ессно, нет. Ждём-с...т.е. предполагается, что у вас 1. записи идут в порядке роста таймстампа. 2. любой сбой (снижение номера) в нумерации серии - есть признак завершения? 3. выдать надо не max(value) а именно строку с последним измерением? если все это верно, то 1. самое простое идти в отсортированном по таймстапу FOR ... IN SELECT Loop-е в plpgsql и следить за монотонностью seria , при сбросе - плеваться RETURN NEXT-ом. 2. в SQL проще конечно предположить, что и нумерация серий у вас идет без пропусков и т.д. т.п. наворочать можно, будет немножко страшненько и не шибко шустро, хотя, имхо, удачнее, если бы вы всю сплошную серию нумеровали одним номером, а не номером измерения в серии. (ну или дополнили струткуру идентификатором серии). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:45 |
|
||
|
Как сконструировать запрос?
|
|||
|---|---|---|---|
|
#18+
Вы мне мозг взорвете. Серия играет какую то роль? Или надо просто выбрать те строки, значение в которых больше чем значения в предыдущей и в последующей строке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 11:56 |
|
||
|
Как сконструировать запрос?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 12:08 |
|
||
|
Как сконструировать запрос?
|
|||
|---|---|---|---|
|
#18+
juteИтеративного решения также хотелось бы избежать. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 12:10 |
|
||
|
Как сконструировать запрос?
|
|||
|---|---|---|---|
|
#18+
ShadyAngel juteИтеративного решения также хотелось бы избежать. :(? yt gjyznyj ?xnj fdnjh cxbnftn bnthfnbdysv непонятно, что автор считает итеративным. Т.к. имхо итеративно - последовательным приближением. т.к. "серия" автором забита для единичного измерения в серии, будем называть серию - "группой серий" , а измерение - "серией" (как это сделал автор) т.к для нормального джойна в группе(серии) (даже с разрывом в 1 в нумерации серии(измерений)) не хватает собственно идентификатора группы ,то придется извращаться - проверять SELECT seria FROM test t2 WHERE t2.stamp > t1.stamp ORDER BY stamp LIMIT 1 т.е. видимо так: SELECT * FROM test t1 WHERE t1.seria>(SELECT seria FROM test t2 WHERE t2.stamp > t1.stamp ORDER BY stamp LIMIT 1); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 12:36 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34764087&tid=2005092]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 368ms |

| 0 / 0 |
