|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
Есть таблица (dt STRING, cl INTEGER) Поле dt хранит дату в формате ISO. Можно ли составить запрос, который выведет таблицу с полями dt, cl, MaxClPrevMonth, MaxClPrev90dt, DateOfMaxClPrevMonth,DateOfMaxClPrev90dt MaxClPrevMonth - Максимальное значение Cl предыдущего перед dt месяца, а DateOfMaxClPrevMonth последнее (по возрастанию) значение dt (если их несколько), соответствующее максимальному Cl MaxClPrev90dt - Максимальное значение Cl из предыдущих(по возрастанию dt) 90 записей, DateOfMaxClPrev90dt аналогично DateOfMaxClPrevMonth Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 17:13 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
meneo... Можно ли составить запрос ... Составить запрос можно. meneo... Спасибо! ...Не за что. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 17:31 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
:) а с самим запросом можно помочь? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 17:40 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
можно, но для этого нужны тестовые данные в удобоваримом виде и желаемый вид результата на этих тестовых данных, потому как словесная формулировка задачи не совсем прозрачная и понятна. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 17:54 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
Добрый Э - Эх, В приложенном файле пример таблицы. одна из строк запроса будет выглядеть таким образом dt - 01.11.2012 cl - 144.3 MaxClPrevMonth - 160.9 - максимальное значение за предыдущий для dt=01.11.2012 месяц (с 01.10.2012 по 31.10.2012) DateOfMaxClPrevMonth - 01.10.2012 самая поздняя дата в этом интервале, когда это значение было достигнуто MaxClPrev90dt - 169.52 - максимальное значение за период c (dt-90дней=03.08.2012) по (01.11.2012) DateOfMaxClPrev90dt - 14.09.2012 самая поздняя дата в этом интервале, когда это значение было достигнуто соответственно для следующего значения dt - 02.11.2012 MaxClPrevMonth и DateOfMaxClPrevMonth буду теми же а MaxClPrev90dt и DateOfMaxClPrev90dt вычисляются для интервала (dt-90дней=04.08.2012) по (02.11.2012) и так далее ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 19:29 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
*одна из строк результата запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2012, 19:36 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
< Решение на коррелированных скалярных limit-подзапросах во фразе SELECT Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
где t - имя твоей таблицы... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 06:27 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
Можно "похулиганить" и "достать" нужные данные по периоду "90 дней" за один заход, а не за два, как это сделано сейчас. Вычисление же данных за предыдущий месяц можно вообще вынести в агрегатное встроенное представление и записать его во фразе FROM/JOIN. по идеи, это должно положительно повлиять на производительность запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 06:40 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
< Похулиганил немного... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Но есть ещё куда сокращать кол-во бесполезно сделанной работы... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 07:15 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
Добрый Э - Эх, круто! Спасибо, сейчас буду разбираться! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 15:15 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
Добрый Э - Эх, ОЧЕНЬ КРУТО!!!! :) Спасибо! Подскажи, пжл, можно ли с помощью функции date получить начало предыдущего квартала? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 16:08 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
обнаружил ошибку, которую не понимаю как пофиксить :( Код: sql 1. 2. 3. 4. 5. 6. 7.
поле dt хранит дату в строковом формате YYYY-MM-DD HH:MM:SS.SSS а функция DATE возвращает YYYY-MM-DD В результате BETWEEN с бОльшим значением работает не как "<=" а как "<" Есть простой выход исправить "WHERE t1.dt BETWEEN" на "WHERE DATE(t1.dt) BETWEEN". Но у меня таких SELECTов как вычисление PrevMonthClose в запросе 8 штук и при такой правке запрос выполняется раза в 3-5 дольше :( Можете ли подсказать другое решение проблемы? Данке! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 17:13 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
meneoобнаружил ошибку, которую не понимаю как пофиксить :( Код: sql 1. 2. 3. 4. 5. 6. 7.
поле dt хранит дату в строковом формате YYYY-MM-DD HH:MM:SS.SSS а функция DATE возвращает YYYY-MM-DD В результате BETWEEN с бОльшим значением работает не как "<=" а как "<" Есть простой выход исправить "WHERE t1.dt BETWEEN" на "WHERE DATE(t1.dt) BETWEEN". Но у меня таких SELECTов как вычисление PrevMonthClose в запросе 8 штук и при такой правке запрос выполняется раза в 3-5 дольше :( Можете ли подсказать другое решение проблемы? Данке! Замени BETWEEN на неравенство... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 18:42 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
Добрый Э - Эх, спасибо! И как я сам не додумался ))) Еще разок - данке! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 20:59 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
Добрый Э - Эх, Подскажи, пжл, можно ли с помощью функции date получить начало предыдущего квартала? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 00:37 |
|
Помогите, пжл, с запросом
|
|||
---|---|---|---|
#18+
Стандартного механизма по работе с квартальными порциями даты нет. Попробовал придумать свой велосипед. Вроде получилось, но как-то кривовато :( : < Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 06:19 |
|
|
start [/forum/topic.php?fid=54&fpage=17&tid=2008961]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 239ms |
total: | 360ms |
0 / 0 |