sql - 将处理或函数应用于需要从另一个 sqlite 表中检索列的列
问题描述
假设我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 来做会更优雅。关于如何开始的任何提示?当处理变得过于复杂时,sqlite3 中的 SQL 是否支持某种形式的函数?
解决方案
您可以将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
。但是,在这种情况下,尚不清楚您将如何报告,因为乘数/外汇汇率是未知的。
推荐阅读
- postgresql - 使用 sqlx::postgres 和 i64 生锈
- ios - 如何在不丢失表格视图单元格的情况下将现有集合视图添加到表格视图
- c# - 在 .NET Core 3.1 中关闭 C# 套接字的正确方法是什么?
- python - 在 RPi GPIO 事件时重置 Xorg 空闲时间,可能通过 NodeRed
- python - 用逗号连接和加号有什么区别
- python - 如何在两个方向上使用 Python 颜色图
- qt - 动画只工作一次,OnClicked
- java - 如何从 SSLContext 中检索 keyManager 详细信息?
- java - java.io.File(String parent, String child) 和 java.io.File(String pathname) 做同样的工作吗?
- python - 当我尝试在弹出窗口中将图像 png 调整为 Iframe 时,图像的分辨率降低了?(叶)