Применить обработку или функцию к столбцу, который требует извлечения столбца из другой таблицы sqlite. - PullRequest
0 голосов
/ 18 октября 2018

Предположим, у меня есть эта таблица name_currency в sqlite3.

name,   currency,   price
AA,     SGD,        1
BB,     USD,        2
CC,     EUR,        3

Мне нужно обработать цену таким образом.

if currency == "SGD", price = price*X 
if currency == "USD", price = price*Y
if currency == "EUR", price = price*Z

Значения X, Y, Z необходимо получить из другой таблицы currency_multiplier.Вот как выглядит currency_multiplier.

name,   currency,   multiplier
AA,     SGD,        2  #value of X 
BB,     USD,        3  #value of Y
CC,     EUR,        4  #value of Z

Таблица вывода будет выглядеть после обработки столбца price;

name,   currency,   price
AA,     SGD,        2
BB,     USD,        6
CC,     EUR,        12

Возможно ли сделать это полностью в sql?Одно из решений, которое я имею в виду, - это получить значения из name_currency, а затем выполнить обработку в функции python.Тем не менее, я думаю, что более элегантно сделать это полностью в SQL.Любые советы о том, как начать?Поддерживает ли SQL в sqlite3 какую-либо форму функции, когда обработка становится слишком сложной?

1 Ответ

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

Вы можете присоединить таблицу name_currency к таблице currency_multiplier:

SELECT
    n.name,
    n.currency,
    c.multiplier * n.price AS price
FROM name_currency n
INNER JOIN currency_multiplier c
    ON n.name = c.name;

Обратите внимание, что при этом возникает риск сброса валют из отчета, который отображается в name_currency, но не отображается вcurrency_multiplier.Но в таком случае непонятно, как бы вы отчитались, так как коэффициент умножения / форекс неизвестен.

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