powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как посчитать следующее значение по формуле от предыдущего?
7 сообщений из 7, страница 1 из 1
Как посчитать следующее значение по формуле от предыдущего?
    #39767917
User2155
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица и там 200 записей. 2 Колонки:
- my_value;
- my_calculated_value.
Первая запись my_value эталон. Все последующие должны считаться по формуле от предыдущего, скажем +10.
Т.е. сначала считается предыдущая запись, затем следующая. Как бы это сделать?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
-- Создание таблицы
drop table if exists #tbl_check;
create table #tbl_check (
	row_id int identity(1,1) primary key,
	my_value int,
	my_calculated_value int)


/*следующие 2 строки надо запустить отдельно от предыдущих, чтобы вставить 200 записей в таблицу*/
insert into #tbl_check (my_value) values(1);
go 200

-- Эталон!
update #tbl_check set my_value = 100 where (row_id = 1);


-- Значения в колонке my_calculated_value должны вычисляться по формуле:
-- первое - эталон + 10
-- все последующие - предыдущее значение + 10. Как это сделать?
select *,
		lag(my_value, 1, 0) over (order by row_id) + 10 as my_calc
from #tbl_check
...
Рейтинг: 0 / 0
Как посчитать следующее значение по формуле от предыдущего?
    #39767921
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
User2155,

тут всё же нужно определиться. или считается по линейной формуле "числового ряда" (каждое последующее = предыдущее + 10), или же вычисления более сложные и зависят не только от взаимного положения строк в итоговой выборке, но и ещё от каких-то условий, не зависящих от положения текущей строки (к примеру - считать накопительный итог, но по достижении суммы определенного размера - начинать считать с нуля).
в первом случае можно решить все при помощи аналитических (оконных) функций. во втором - потребуется рекурсивность
...
Рейтинг: 0 / 0
Как посчитать следующее значение по формуле от предыдущего?
    #39767925
User2155
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

Формула линейная. Проблема в том, что точно известно только первое значение, а все последующие должны считаться как "Предыдущее + 10".
...
Рейтинг: 0 / 0
Как посчитать следующее значение по формуле от предыдущего?
    #39767937
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
User2155Формула линейная. Проблема в том, что точно известно только первое значение, а все последующие должны считаться как "Предыдущее + 10".
Т.е. тупо

Код: sql
1.
first_value(my_value) over (order by row_id) + delta * (row_number() over (order by row_id) - 1) as my_calc
...
Рейтинг: 0 / 0
Как посчитать следующее значение по формуле от предыдущего?
    #39767958
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
User2155Щукина Анна,

Формула линейная. Проблема в том, что точно известно только первое значение, а все последующие должны считаться как "Предыдущее + 10".Что такое "следующие"? Что определяет порядок?
...
Рейтинг: 0 / 0
Как посчитать следующее значение по формуле от предыдущего?
    #39767985
User2155
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Воронцов,

в данном случае row_id.
...
Рейтинг: 0 / 0
Как посчитать следующее значение по формуле от предыдущего?
    #39768566
pahanitto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

я так понял что ему возрастающюю суммц надо от предыдыщего?

те у него строки
1
2
4
6
4
а в итоге
1
3
7
13
17
если так о говори код скину
так?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как посчитать следующее значение по формуле от предыдущего?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]