sql跨列计算
Posted
技术标签:
【中文标题】sql跨列计算【英文标题】:sql cross column calculation 【发布时间】:2021-11-12 14:45:08 【问题描述】:存在表:
currency1 | currency 2 | price
----------+------------+--------
usd | eur | 0.87
eur | gbp | 0.88
usd | gbp | 0.89
inr | eur | 0.90
usd | inr | 0.91
...
我需要找到所有选项以找到一种货币介于两者之间的美元价格的英镑。示例:usd-eur-gbp(前两行:用美元买入欧元,然后用欧元买入英镑)。
-
这个问题有没有一般的名称?
是否可以使用 SQL(postgresql、click house)? (我想依赖 DBMS 查询优化)
【问题讨论】:
您希望该样本数据的输出是什么样的? 0.87*0.88=0.7656 【参考方案1】:“一般”问题的名称是 Self Join
select a.currency1, a.currency2, b.currency2, a.price*b.price as price
from table as a
join table as b
on a.currency2 = b.currency1
where a.currency1 = 'usd'
and b.currency2 = 'gbp'
这为您提供了将美元兑换为 gbp 的所有变体。结果将有几行或0行(如果没有办法交换)。
【讨论】:
EUR 已经给出了例子。这个问题的一部分是使用我们拥有的货币 (USD) 找到任何可用于购买所需 (GBP) 的货币。 好的,这让您的要求更加清晰。所以 var 1 更合适:select a.currency1, a.currency2, b.currency2, a.price*b.price as price from table as a join table as b on a.currency2 = b.currency1 where a.currency1 = 'usd' and b.currency2 = 'gbp' order by price
为您提供所有变体,以便将美元兑换成 gbp。它可以给你很多行或0行(如果没有办法交换)。
谢谢!这正是我需要的!为列添加了别名,这样它们就不会相互覆盖(currency2)。以上是关于sql跨列计算的主要内容,如果未能解决你的问题,请参考以下文章
HTMLHTML 表格 ③ ( 合并单元格 | 跨行合并 | 跨列合并 | 单元格合并顺序 | 跨行设置 rowspan 属性 | 跨列设置 colspan 属性 )