Обновление Mysql с присоединением к преобразованию db2 - PullRequest
0 голосов
/ 07 октября 2018

У меня есть этот запрос, который структурирован больше для mysql

 update metrics m join
   (select repnumber, material, item, color, sum(m2.velocity)/count(*) as avg_velocity
    from metrics m2
    group by repnumber, material, item, color
   ) m2
   using (repnumber, material, item, color)
set m.repvolocity = m2.avg_velocity;

Есть ли способ изменить это, чтобы работать для db2?

1 Ответ

0 голосов
/ 07 октября 2018

В DB2 (и в большинстве других баз данных) вы используете коррелированный подзапрос:

update metrics m
    set repvolocity = (select avg(m2.velocity)
                       from materials m2
                       where m2.repnumber = m.repnumber and m2.material = m.material and m2.item = m.item and m2.color = m.color
                      );

Следует отметить, что DB2 также позволяет легко вычислить значение на лету:

select m.*,
       avg(m.velocity) over (partition by repnumber, material, item, color) as repvelocity
from materials;

С помощью оконных функций вы можете обнаружить, что нет необходимости фактически сохранять значение.Я должен добавить, что MySQL 8+ также имеет эту возможность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...