Раді Вас бачити! » Увійти » Створити новий профіль

ФЗВ Помогите с SQL запросом

Re: ФЗВ Помогите с SQL запросом

Я зрозумів, вот те що тобі потрібно


WITH tmp_table as  (SELECT
    "ID",
    "VALUE",
    sum("VALUE") OVER (ORDER BY "ID") as saldo,
    sum("VALUE") OVER () as saldo_all
FROM table1
ORDER BY "ID")
SELECT
tb1.*,
CASE WHEN tb1."VALUE"-tmp_table."saldo">0 THEN saldo_all ELSE 0 END AS RESULT
from table1 tb1
LEFT JOIN tmp_table ON tb1."ID"=tmp_table."ID"

ID,    VALUE,    RESULT
1,    408.96,      0
2,    -414.63,     0
3,    563.94,      3.19
4,    -308.73,     0
5,    -246.35,     0

ID,    VALUE,    RESULT
1,     408.96,     0
2,     -414.63,    0
3,     563.94,     249.54
4,    -308.73,     0

ID,    VALUE,    RESULT
1,     408.96,     0
2,     -414.63,    0
3,     563.94,     558.27

ID,    VALUE,    RESULT
1,     408.96,     0
2,     -414.63,    0

ID,    VALUE,    RESULT
1,     408.96,     0

До 3 періода заборгованості не було тому  0



Останнє редагування: 14 серпня 2018 13:57:01 від Luxetenebris
   
Re: ФЗВ Помогите с SQL запросом

Не всі ще знають про WINDOW / ANALYTICAL functions в SQL.   Зате тепер знаєте, що гуглити. Приклад з OVER правильний, решта - з 80-х років.
   
Re: ФЗВ Помогите с SQL запросом
Bmx

есть значения
1 408.96
2 -414.63
3 563.94
4 -308.73
5 -246.35

мне надо
step
408.96-414.63
1 408.96 0
2 -414.63 -5.67
step
408.96-414.63+563.94
1 408.96 0
2 -414.63 0
3 563.94 558.27
step
408.96-414.63+563.94-308.73
1 408.96 0
2 -414.63 0
3 563.94 249.54
4 -308.73 0
step
408.96-414.63+563.94-308.73-246.35
1 408.96 0
2 -414.63 0
3 563.94 3.19
4 -308.73 0
5 -246.35 0

те я хочу узнать за какой период остался положительный остаток
желательно одним select

тоді ця умова  випадає:

мне надо
step
408.96-414.63
1 408.96 0
2 -414.63 -5.67
   
Re: ФЗВ Помогите с SQL запросом


я сам программист баз данных



чомусь відразу так і подумалось.....
   
Re: ФЗВ Помогите с SQL запросом
Bmx

Не всі ще знають про WINDOW / ANALYTICAL functions в SQL.   Зате тепер знаєте, що гуглити. Приклад з OVER правильний, решта - з 80-х років.

у віконних функціях є обмеження на датасет, вроді як більше 4к не стягнуть.. тре гуглити.
так що варіант Luxetenebris  більш практичний.

Варіант з аналітикою :-)
SQL> select id,
  2         case
  3           when summ - sum(summ)
  4            over(order by id ROWS BETWEEN UNBOUNDED PRECEDING and CURRENT ROW) <= 0 then
  5            0
  6           else
  7            sum(summ) over(order by id ROWS BETWEEN UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING)
  8         end result
  9    from tmp_t
 10   where id < 6
 11  ;

        ID     RESULT
---------- ----------
         1          0
         2          0
         3       3.19
         4          0
         5          0
   
Re: ФЗВ Помогите с SQL запросом

у віконних функціях є обмеження на датасет, вроді як більше 4к не стягнуть.. тре гуглити.
так що варіант Luxetenebris  більш практичний.

Варіант з аналітикою :-)
SQL> select id,
  2         case
  3           when summ - sum(summ)
  4            over(order by id ROWS BETWEEN UNBOUNDED PRECEDING and CURRENT ROW) <= 0 then
  5            0
  6           else
  7            sum(summ) over(order by id ROWS BETWEEN UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING)
  8         end result
  9    from tmp_t
 10   where id < 6
 11  ;

        ID     RESULT
---------- ----------
         1          0
         2          0
         3       3.19
         4          0
         5          0

 (tu)
   
Re: ФЗВ Помогите с SQL запросом

у віконних функціях є обмеження на датасет, вроді як більше 4к не стягнуть.. тре гуглити.
так що варіант Luxetenebris  більш практичний.

Варіант з аналітикою :-)
SQL> select id,
  2         case
  3           when summ - sum(summ)
  4            over(order by id ROWS BETWEEN UNBOUNDED PRECEDING and CURRENT ROW) <= 0 then
  5            0
  6           else
  7            sum(summ) over(order by id ROWS BETWEEN UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING)
  8         end result
  9    from tmp_t
 10   where id < 6
 11  ;

        ID     RESULT
---------- ----------
         1          0
         2          0
         3       3.19
         4          0
         5          0

красиво  (tu)  B-)
   
Re: ФЗВ Помогите с SQL запросом

Мені здається що ця гілка це наслідок того що закрили ПТ на SQL.RU  :-)
   
Re: ФЗВ Помогите с SQL запросом
hawk2002

Мені здається що ця гілка це наслідок того що закрили ПТ на SQL.RU  :-)
я думал только для меня закрыли по ip или еще как, а оказывается вона чо...
кстати, я арею вижу, но войти туда не могу. а пт вообще не видно :)
   
Re: ФЗВ Помогите с SQL запросом

я думал только для меня закрыли по ip или еще как, а оказывается вона чо...

ЗПТ і AREA 51 ще дихають ...
   
Re: ФЗВ Помогите с SQL запросом
slp

Мені здається що ця гілка це наслідок того що закрили ПТ на SQL.RU  :-)

ПТ - это что ?

я давно на sql.ru
   
Re: ФЗВ Помогите с SQL запросом
hawk2002

ПТ - это что ?

я давно на sql.ru
:laugh:
не тем чем надо занимался все это время
   
Re: ФЗВ Помогите с SQL запросом
slp

UNBOUNDED PRECEDING and CURRENT ROW

это что ?
   
Re: ФЗВ Помогите с SQL запросом
slp

:laugh:
не тем чем надо занимался все это время

в основном на форуме postgresql
   
Re: ФЗВ Помогите с SQL запросом

ПТ - это что ?

я давно на sql.ru

стидоба не знати що таке ПТ

ПРОСТО ТРЕП ....  :D
   
Re: ФЗВ Помогите с SQL запросом
Bmx

это что ?

це задає область записів з таблички на яку поширюється аналітична функція

https://www.postgresql.org/docs/9.3/static/functions-window.html
   
Re: ФЗВ Помогите с SQL запросом
slp

стидоба не знати що таке ПТ

ПРОСТО ТРЕП ....  :D

ну не знаю

так скажи
   
Re: ФЗВ Помогите с SQL запросом
hawk2002

стидоба не знати що таке ПТ

ПРОСТО ТРЕП ....  :D
проводится дератизация
   
Re: ФЗВ Помогите с SQL запросом

проводится дератизация
Показати зображення...

роскомнадзор мабудь яйки прижав за ПТ ... :-)
   
Re: ФЗВ Помогите с SQL запросом
slp

проводится дератизация
Показати зображення...

никогда не видел этого форума и естественно не заходил в него
   
Re: ФЗВ Помогите с SQL запросом

никогда не видел этого форума и естественно не заходил в него

 :facepalm1:
   
Re: ФЗВ Помогите с SQL запросом
slp

:facepalm1:

его вообще не видно
   
Re: ФЗВ Помогите с SQL запросом

Наиболее правильным вариантом (хоть и, возможно, не самым производительным в базовом варианте) будет - используя таблицу опорного календаря получать сальдо на каждый день

зы это сейчас по экономике такие лабы стали давать?
   
Re: ФЗВ Помогите с SQL запросом

Наиболее правильным вариантом (хоть и, возможно, не самым производительным в базовом варианте) будет - используя таблицу опорного календаря получать сальдо на каждый день

зы это сейчас по экономике такие лабы стали давать?

у нього там були періоди а не конкретні дати
і сальдо там потрібно рахувати на кожен окремий період
   
Re: ФЗВ Помогите с SQL запросом

ап
   
Re: ФЗВ Помогите с SQL запросом

ап
   
Re: ФЗВ Помогите с SQL запросом

у нього там були періоди а не конкретні дати
і сальдо там потрібно рахувати на кожен окремий період
Тем более нужен опорный календарь, раз "на конкретные даты"
Иначе - что произойдёт?
Если в исходных данных не будет нужной даты (даты окончания периода. Да и где они, кстати, эти даты, кто знает?) - у нас не будет данных на эту дату.
   
Re: ФЗВ Помогите с SQL запросом

Тем более нужен опорный календарь, раз "на конкретные даты"
Иначе - что произойдёт?
Если в исходных данных не будет нужной даты (даты окончания периода. Да и где они, кстати, эти даты, кто знает?) - у нас не будет данных на эту дату.

не конкретные даты а периоды дат под ИДшками ....
   
Re: ФЗВ Помогите с SQL запросом

не конкретные даты а периоды дат под ИДшками ....

это вот, кстати, одна из причин, по которой я сразу начинаю орать. Всё равно потом придётся - так чего я буду время терять?

"период времени (временнóй интервал)  - Последовательность времени между двумя временными точками. Эти временные точки называют соответственно «начало» и «конец». Период времени может быть определен между временными точками, одной временной точкой и временным расстоянием между точками или временным расстоянием только между этими точками."
Вот эти вот "временные точки" - и есть "конкретные даты", обозначенные в "опорном календаре".
   
Re: ФЗВ Помогите с SQL запросом

это вот, кстати, одна из причин, по которой я сразу начинаю орать. Всё равно потом придётся - так чего я буду время терять?

"период времени (временнóй интервал)  - Последовательность времени между двумя временными точками. Эти временные точки называют соответственно «начало» и «конец». Период времени может быть определен между временными точками, одной временной точкой и временным расстоянием между точками или временным расстоянием только между этими точками."
Вот эти вот "временные точки" - и есть "конкретные даты", обозначенные в "опорном календаре".

ни ты ни я не видел что там на самом деле у чувака .
у него 1 2 3 4 и 100500, 100600 суммы  и ему надо.
а что там реально, есть ли у него даты, где и как они тим хранятся как обновляются -  ХЗ  ...  ни ты ни я не вкурсе что там у програмиста БД с 2004 года .. :laugh:

   
Re: ФЗВ Помогите с SQL запросом

ни ты ни я не видел что там на самом деле у чувака .
у него 1 2 3 4 и 100500, 100600 суммы  и ему надо.
а что там реально, есть ли у него даты, где и как они тим хранятся как обновляются -  ХЗ  ...  ни ты ни я не вкурсе что там у програмиста БД с 2004 года .. :laugh:

есть такая штука как "опыт". Даёт возможность принимать правильные и/или оптимальные решения на основании неполных данных.
Рекомендую.
   
Re: ФЗВ Помогите с SQL запросом

есть такая штука как "опыт". Даёт возможность принимать правильные и/или оптимальные решения на основании неполных данных.
Рекомендую.

видал я таких принимальщиков решений на основании  неполных данных ...
такая штука как опыт подсказывает что ипись оно вороным конем чтото делать на основании неполных данных  :gigi:
   
Re: ФЗВ Помогите с SQL запросом

видал я таких принимальщиков решений на основании  неполных данных ...
такая штука как опыт подсказывает что ипись оно вороным конем чтото делать на основании неполных данных  :gigi:
Поэтому ты всегда сидишь и нифига не делаешь?
Неплохо, но малодоходно.
   
Re: ФЗВ Помогите с SQL запросом

Поэтому ты всегда сидишь и нифига не делаешь?
Неплохо, но малодоходно.

неплохо и достаточно доходно, это я тебе точно говорю. И кроме того потом не бегаеш как макак по кукурузному полю с красной задницей , переделывая то что сделал на основании неполных данных ...

   
Re: ФЗВ Помогите с SQL запросом

фак, так и тянет прочитать лайтинг на тему "принятие квази-оптимальных технологических решения для быстрой реализации задач на примере задач расчета нарастающих итогов"
но лень
   
Re: ФЗВ Помогите с SQL запросом

фак, так и тянет прочитать лайтинг на тему "принятие квази-оптимальных технологических решения для быстрой реализации задач на примере задач расчета нарастающих итогов"
но лень

приежжай, прочитаеш. я тебе в Ужгороде моментом организую каконить митап, даже в рамках SQL комюнити груп

раскажеш сказки про быстрые реализации на основании неполных данных   :lol:
   
Re: ФЗВ Помогите с SQL запросом

неплохо и достаточно доходно, это я тебе точно говорю. И кроме того потом не бегаеш как макак по кукурузному полю с красной задницей , переделывая то что сделал на основании неполных данных ...

а, я понял, в чем проблема
ты не знаешь значение слова "правильное"
Давай я тебе помогу:
ПРАВИЛЬНО:
1.Верно, точно, безошибочно.
2. Так, как нужно, как следует.


А когда ты "бегаешь как макак" - то значит что ты просто обизяна и в очередной раз спорол херню.
но про херню то речь не шла, верно?
Говорилось об "возможность принимать правильные и/или оптимальные решения "
   
Re: ФЗВ Помогите с SQL запросом

а, я понял, в чем проблема
ты не знаешь значение слова "правильное"
Давай я тебе помогу:
ПРАВИЛЬНО:
1.Верно, точно, безошибочно.
2. Так, как нужно, как следует.


А когда ты "бегаешь как макак" - то значит что ты просто обизяна и в очередной раз спорол херню.
но про херню то речь не шла, верно?
Говорилось об "возможность принимать правильные и/или оптимальные решения "

оговорилось о том что ни ты ни я дупля не отстреливаем что там у топикастера и програмиста БД с 2004 года на самом деле
   
Re: ФЗВ Помогите с SQL запросом

приежжай, прочитаеш. я тебе в Ужгороде моментом организую каконить митап, даже в рамках SQL комюнити груп

раскажеш сказки про быстрые реализации на основании неполных данных   :lol:

не-не-не!
Фигушки!
Я раз сдуру согласился (у меня- географический идиотизм, я хрен гребу что где. А потом оказалось что Ужгород - это наиболее удалённый от меня город, дальше просто не бывает.)
Я чуть не умер пока доехал

но город, конечно, мне понравился, хотя я там и недолго был.
Симпатичное место.
   
Re: ФЗВ Помогите с SQL запросом

оговорилось о том что ни ты ни я дупля не отстреливаем что там у топикастера и програмиста БД с 2004 года на самом деле

Я тебя умоляю! Если челу надо забить гвоздь - надо брать молоток!
Стандартное технологическое решение, понятное и доступное всем
Причем - неплохо масштабируемое и подходящее для большинства непромышленных применений.

точно так и тут.
"Сальдо на дату" - опорный календарь. Быстро, просто, дёшево, масштабируемо
А так, конечно - от циклов, курсоров и т.д - до селф джойнов. но каждое "конкретное" решение будет с косяком/оговоркой
В то время как "стандартное" - будет конфигурируемо и, кстати, вполне вероятно - значительно более оптимальным
   

Цю тему переглядають:

0 Користувачів і 1 гість
 
Повна версія