powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
15 сообщений из 15, страница 1 из 1
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39127178
michail_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

в таблице есть 2 столбца:
время скорость
а0 1.2 0
а1 1.5 16
а2 1.9 35

Я хочу добавить третий столбец, в котором будут записаны данные ускорения. С добавлением проблем нет. Но не могу добавить в формулу текущее и предыдущее значение.

Ускорение для строки а0 = (скорость а0)/(время а0)
Ускорение для строки а1 = (скорость а1 - скорость а0)/(время а1 - время а0)
Ускорение для строки а2 = (скорость а2 - скорость а1)/(время а2 - время а1) и т.д.

В экселе это очень легко считается, а можно ли задать такую формулу в MySQL?
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39127186
michail_s,

можно. варианты реализации:
коррелированный подзапрос в селект-листе
селф-джойн
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39127214
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё переменные, но это чисто мускльная специфика.
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39127250
michail_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за ответы, пойду искать. Решение потом сюда напишу - может кому-то тоже пригодится.

Если кто-то сможет выложить пример кода (допустим по данным из примера), то было бы очень здорово.
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39127281
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39127549
michail_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал-пробовал, но что-то по вышеприведенным ссылкам у меня не получилось построить запрос. Может кто подскажет как мне заполнить столбец Асс по формуле ускорения (она дана ниже):

Код: sql
1.
2.
3.
4.
5.
6.
7.
Time	    Speedknots	Speedkm	Acc
1449751931.976	1.500	0.772	(null)
1449751932.476	1.500	0.772	(null)
1449751932.976	1.800	0.926	(null)
1449751933.476	1.800	0.926	(null)
1449751933.976	1.900	0.977	(null)
1449751934.475	1.900	0.977	(null)



Формула для ускорения:
Acc = (b.Speedkm - a.Speedkm)/(b.Time - a.Time) , где Асс мы получаем и записываем для строки b

где строка b располагается сразу под строкой а.
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39127986
michail_s,

вот тебе как пища для размышления, на твоем примере данных из стартового поста...
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39127990
michail_s,

оу, у тебя же всего две колонки в исходной таблице...
тогда так
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39128649
michail_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

Ссылки не открываются ( - обновите пожалуйста
На самом деле у меня 4 столбца, выше привел реальный пример из базы.
Но если работает на двух, то и для четырех, я думаю, смогу сделать
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39128730
michail_s,

все открывается...
но на всякий случай скопирую сюда то, что по ссылке 2:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
-- тестовая таблица:
create table t (t real, v real);
insert into t values(1.2,  0);
insert into t values(1.5, 16);
insert into t values(1.9, 35);

-- запрос:
select t0.t as curr_t, t1.t as prev_t, t0.v as curr_v, t1.v as prev_v
     , (t0.v - coalesce(t1.v,0))/(t0.t - coalesce(t1.t,0)) as x_accel
  from t t0
  left join t t1
    on t0.t > t1.t
   and not exists
       (
         select null
           from t t2
          where t2.t < t0.t
            and t2.t > t1.t
       )
 order by t0.t;
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39128838
michail_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

Спасибо за помощь, вторая ссылка открылась. Смысл запроса я понял, но у меня не получилось его адаптировать к моим данным . Где-то есть ошибка, т.к. запрос начинает исполняться и так и все "исполняется и исполняется" без окончания, как будто завис (хотя всего 1600 строк).

Код: 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.
-- Мои данные:
Time	    Speedknots	Speedkm	Acc
1449751931.976	1.500	0.772	(null)
1449751932.476	1.500	0.772	(null)
1449751932.976	1.800	0.926	(null)
1449751933.476	1.800	0.926	(null)
1449751933.976	1.900	0.977	(null)
1449751934.475	1.900	0.977	(null)

-- Таблица:
CREATE TABLE auto.androgps (
  Time decimal(20, 3) DEFAULT NULL,
  Speedknots decimal(20, 3) DEFAULT NULL,
  Speedkm decimal(20, 3) DEFAULT NULL,
  Acc decimal(20, 3) DEFAULT NULL

-- запрос:
select t0.Time as curr_t, t1.Time as prev_t, t0.Speedkm as curr_v, t1.Speedkm as prev_v, (t0.Speedkm - coalesce(t1.Speedkm,0))/(t0.Time - coalesce(t1.Time,0)) AS acc
  from androgps t0
  left join androgps t1
    on t0.Time > t1.Time
   and not exists
       (
         select null
           from androgps t2
          where t2.Time < t0.Time
            and t2.Time > t1.Time
       )
 order by t0.Time
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39128871
michail_s,

Нужно not exists переписать через левый Джои. Либо проиндексировать таблицу по полям соединения из not exists подзапроса
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39128890
michail_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

Хорошо, попробую.
Поправка - вышеуказанный скрипт выполняется, только на его выполнение ушло более 10 мин.
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39129986
michail_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу никак сообразить как этот запрос мне переделать из Select в Update, чтобы результаты запроса сразу добавлялись в таблицу
androgps в существующий столбец Acc. Может кто подскажет, спасибо.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select t0.Time as curr_t, t1.Time as prev_t, t0.Speedkm as curr_v, t1.Speedkm as prev_v, (t0.Speedkm - coalesce(t1.Speedkm,0))/(t0.Time - coalesce(t1.Time,0)) AS acc
  from androgps t0
  left join androgps t1
    on t0.Time > t1.Time
   and not exists
       (
         select null
           from androgps t2
          where t2.Time < t0.Time
            and t2.Time > t1.Time
       )
 order by t0.Time
...
Рейтинг: 0 / 0
Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
    #39130389
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно, конечно, такое написать, но читабельность будет ниже плинтуса. Проще будет вытащить результат расчёта ускорения во временную таблицу, а потом вторым отдельным запросом проапдейтить androgps.
ЗЫ. На будущее рассмотрите вариант - повесить на таблицу before insert триггер с расчётом ускорения для текущей записи.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Формула использующая текущее и предыдущее значение столбца для расчета (расчет ускорения)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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