Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
есть таблица id,summa например 1 4444 2 333 3 -444 4 22 5 44 6 -555 Надо составить запрос для подсчета суммы нарастающим итогом по каждой записи те должно будет 1 4444 2 4444+333 3 4444+333-444 и ьд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 11:06 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Например это есть в ФАКю http://www.sql.ru/faq/faq_topic.aspx?fid=125 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 11:35 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
ФАК то по MSSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 11:43 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Perederiyесть таблица Надо составить запрос для подсчета суммы нарастающим итогом по каждой записи Плюс к тому, что предложили предыдущие ораторы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 11:48 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Владимор Конев Perederiyесть таблица Надо составить запрос для подсчета суммы нарастающим итогом по каждой записи Плюс к тому, что предложили предыдущие ораторы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. у меня другая ситуация select t1.summa, ( select sum(t2.SUMMA) from t1 t2 where t1.id >= t2.id ) as slide_summ From (select очень длинный запрос) t1 пишет ошибку - нет отношения t2 Можно как-то вычислять сумму нарастающим без подзапроса ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 12:40 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
PerederiyМожно как-то вычислять сумму нарастающим без подзапроса ?Эх, по ссылке ты так и не прошелся? Вот тебе пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 12:46 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
прочитал в FAQ да жалко мне вас в oracle это 1-м запросом select t.*, sum(am) over (partition by acc order by t.cr_date ) tot from vedomost t Есть ли подобная фишка в PostgreSQL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 12:50 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Perederiyпрочитал в FAQ да жалко мне вас в oracle это 1-м запросом select t.*, sum(am) over (partition by acc order by t.cr_date ) tot from vedomost t Есть ли подобная фишка в PostgreSQL ?Это кого именно жалко-то??? Лично я сам на Оракле сижу :), что и не трудно видеть, заглянув в мой профиль... А аналитический SQL в PostgreSQL пока ещё отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 12:59 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
насчет жалко - я просто цитировал FAQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 13:10 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
PerederiyЕсть ли подобная фишка в PostgreSQL ? order by siblings есть ли подобная фишка в oracle8 ? Насколько я знаю нету. Пытались ли вы в pl/sql коде делать примерно такой курсор select 1 as a, (select 1 from dual) as b from dual в oracle8 он не работает (по крайней мере у меня) фишки они, как правило, добавляются со временем, имхо ваша жалость неуместна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 13:16 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Perederiyнасчет жалко - я просто цитировал FAQ тогда sorry ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 13:18 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
st_serg order by siblings есть ли подобная фишка в oracle8 ? Насколько я знаю нету. Пытались ли вы в pl/sql коде делать примерно такой курсор select 1 as a, (select 1 from dual) as b from dual в oracle8 он не работает (по крайней мере у меня) фишки они, как правило, добавляются со временем, имхо ваша жалость неуместна. Про siblings - оно конечно же есть в Оракле, вот только начиная с 9-ки :-) Хотя, сами иерархические запросы появились задолго до этого релиза. ЗАто иерархические запросы - совершенно легальная и вполне стабильно работающая вещь в Оракле, чего не скажешь про PostgreSQL. Что касается запроса: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 13:23 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
напишите процедуру типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. можно еще пофантазировать на тему создания переменной сессии и использовании ее в качестве "накопительной" в некой волатильной функции-сумматоре в запросе (на предмет использования конечного запроса в дальнейших джойнах и т.п.). Вот только порядок исполнения в том же порядке, что и порядок конечной сортировки записей вряд ли гарантирован для любого плана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 13:31 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Владимор КоневПравда проверить работоспособность именно на 8-ки - нет возможности что в 9ке работает знаю, а когда этот код попал в 8ку для меня это было сюрпризом. не очень приятным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 13:34 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
только не обычный запрос, а именно в pl/sql коде. обычный запрос и в 8ке прекрасно работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 13:38 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
4321Вот только порядок исполнения в том же порядке, что и порядок конечной сортировки записей вряд ли гарантирован для любого плана.НЕ твоя правда :) Если можно однозначно задать порядок итоговой выборки, то можно совершенно также ОДНОЗНАЧНО задать порядок вычисления "накопительной суммы", просто условия фильтрации данных в подзапросе расчета накопительной суммы нужно определять соответствующим образом :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 13:56 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
st_sergтолько не обычный запрос, а именно в pl/sql коде. обычный запрос и в 8ке прекрасно работает.НУ, это уж издержки различий в SQL и PL/SQL машинах 8-й версии Оракла. Оно, к примеру, в 8-ке CASE в SQL есть и отлично работает, а в PL/SQL - дудки, то же самое касательно аналитического SQL. Но все решаемо - есть динамический SQL, есть запрос из представления - при их помощи можно скрыть всё то, что PL/SQL-ный движок не понимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 13:59 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
что в лоб - что по лбу в моем случае он не видит t2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 14:02 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Perederiyчто в лоб - что по лбу в моем случае он не видит t2Приведи свой вариант запроса... Именно в том виде, как ты его написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 14:09 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
это очень длинно будет в принципе так будет : select t1.summa, ( select sum(t2.SUMMA) from t1 t2 where t1.id >= t2.id ) as slide_summ From (select очень длинный запрос) t1 не видит отношения t2 все верно - в подзапросе комп не знает что такое t1 Но как его заставить понять что t1 уже определен в главном FROM ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 14:16 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Perederiyэто очень длинно будет в принципе так будет : select t1.summa, ( select sum(t2.SUMMA) from t1 t2 where t1.id >= t2.id ) as slide_summ From (select очень длинный запрос) t1 не видит отношения t2 все верно - в подзапросе комп не знает что такое t1 Но как его заставить понять что t1 уже определен в главном FROM ?Ну, батенька. Так это у тебя не таблица, а встроенное представление получается (в терминах Oracle) :). И тебе должно быть известно, что встроенное представление (даже в Оракле) не может быть коррелированным. Не думаю, что в других субд по другому - таки это ANSI-стандарт и все СУБД более-менее ему следуют. Таки тебе придется показать запрос полностью :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 14:22 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
ну если это поможет ... это работает а вот дальше я туплю select q2.naim,q2.god from (SELECT '' as naim,q1.god,round(sum(q1.summanas)-sum(q1.summaopl),2) as dolg FROM (SELECT "period"."god", SUM("oplatateplo"."summa") as summaopl, 0 as summanas FROM "public"."period" "period" INNER JOIN "public"."oplatateplo" "oplatateplo" ON "period"."period_id" = "oplatateplo"."period_id" WHERE ("period"."god" <= 2005 ) GROUP BY "period"."god" UNION SELECT "period"."god", 0 as summaopl, SUM("prodagateplo"."summa") as summanas FROM "public"."period" "period" INNER JOIN "public"."prodagateplo" "prodagateplo" ON "period"."period_id" = "prodagateplo"."period_id" WHERE ("period"."god" <= 2005) GROUP BY "period"."god" UNION SELECT "period"."god", 0 as summaopl, SUM("lgotteplosumma"."summagvs")+SUM("lgotteplosumma"."summateplo")*(-1) as summanas FROM "public"."contragentteplo" "contragentteplo" INNER JOIN "public"."lgotteplosumma" "lgotteplosumma" ON "contragentteplo"."contragentteplo_id" = "lgotteplosumma". "contragentteplo_id" INNER JOIN "public"."period" "period" ON "period"."period_id" = "contragentteplo"."period_id" WHERE ("period"."god" <= 2005) GROUP BY "period"."god") q1 group by q1.god order by q1.god ) q2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 14:34 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Perederiyэто очень длинно будет в принципе так будет : select t1.summa, ( select sum(t2.SUMMA) from t1 t2 where t1.id >= t2.id ) as slide_summ From (select очень длинный запрос) t1 не видит отношения t2 все верно - в подзапросе комп не знает что такое t1 Но как его заставить понять что t1 уже определен в главном FROM ? формально - либо сохранить t1 как вью , либо Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 14:45 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Perederiyну если это поможет ... это работает а вот дальше я туплю Код: plaintext 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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. Используй в своих постингах тег SRC. Он может очень приятно преобразить внешний вид твоего сообщения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 15:02 |
|
||
|
помогите с запросом - что-то туплю
|
|||
|---|---|---|---|
|
#18+
Владимор Конев 4321Вот только порядок...НЕ твоя правда :) Если можно однозначно задать порядок итоговой выборки, то можно совершенно также ОДНОЗНАЧНО задать порядок вычисления "накопительной суммы", просто условия фильтрации данных в подзапросе расчета накопительной суммы нужно определять соответствующим образом :).??? выдранная вами цитата вообще не имела ничего с подзапросами расчета накопительных сумм. Она касалась, ежели присмотрецца, некой волатильной фии блаблаблабла (читай те блаблаблабла ф том же топеге, што и драная вами цитата) т.е. ф-ии вида ~~ (очень примерно, без учета веток инициализации mysession_x и т.п.) CREATE my_summ(x ) AS' SELECT mysession_x + x; ' lang sql. которая бы вызывалась прямо таки так: SELECT myorder, summ, my_summ(x) FROM t1 WHERE ... ORDER BY myorder; т.е. без всякой множественности суммирования одного и того же - попросту суммирование с приращением "в потоке отсортированных данных" (но не в лупе, а прямо в запросе - за счет переменной сессии). рассуждение же о гарантиях и их отсутствии касалось порядка выполнения my_summ(x) над строками результирующего набора. В т.ч. в зависимости от условия WHERE , или т.п. (в т.ч. и от того, что из себя представляет t1, или куда вся эта байда потом еще можеть быть втсроена (например джойном). если ваше возражение касаецца именно такого весьма умозрительного случая (для которого надо нарисовать переменную сессии, ф-ю, и запрос, причем все это сделать нетрудно, вопользовавшись поиском по форуму - все компоненты обсуждались, но лениво - потом еще тестировать совпадает ли порядок вызовов ф-ии с порядком сортровки записей в конечной выборке), то поясните, если же вы высказывались касательно своих (или еще чьих) многократно считаемых подзапросов (выше по топегу) то - 1. я с ними не спорил, и 2. ну их нафих 3 раза. - Я бы просто дулупную процедуру написал. (Много-много) быстрее должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 15:12 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33765347&tid=2006313]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 410ms |

| 0 / 0 |
