умножать поля на основе значения поля в sql - PullRequest
1 голос
/ 05 августа 2020

У меня есть такая таблица:

name,code1,code2
a,3,
b,5,
c,10,
a,,10
b,,30
c,,50

EDIT

Моя таблица такая, и у меня всегда будут две строки с одинаковым значением в поле name:

My table

and I would like to multiply rows having the same value on name field, so getting something like this:

name,final
a,30
b,150
c,500

I was also thinking to transform the previous table into this one: введите описание изображения здесь

Ответы [ 3 ]

2 голосов
/ 05 августа 2020

Если у вас всегда есть две строки для каждого имени, где одна (только) имеет значение для code1, а другая (только) имеет значение для code2, вы можете использовать самостоятельное соединение

select t1.name, t1.code1, t2.code2, t1.code1 * t2.code2
from the_table t1 
  join the_table t2 on t1.name = t2.name and t2.code1 is null
where t1.code2 is null;
1 голос
/ 05 августа 2020

Попробуйте следующее -

select name, min(code1)*min(code2) as final
from tablename
group by name
0 голосов
/ 05 августа 2020

SQL не имеет встроенной функции агрегирования «товаров». Но вы можете go вернуться к арифметическим c и использовать для этого логарифмы. Точный синтаксис может отличаться в зависимости от базы данных, но идея такая:

select name, exp(sum(ln(code1))) as product
from t
group by name;

Все ваши примеры положительны. Это немного усложняется, если вам приходится иметь дело с отрицательными или нулевыми значениями.

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