ruby - PostgreSQL 数据库中的货币转换和聚合

标签 ruby postgresql

在我们的应用程序中,我们存储了不同捐助者的多个项目资金,他们以各自的货币插入,例如德国为 EUR,瑞典为 SEK 等。

我们的想法是以一种货币为这些项目提供报告。 我们目前将资金数额及其货币一起存储在如下表中:

development=> \d funding_forecasts
                                   Table "public.funding_forecasts"
   Column    |          Type          |                           Modifiers                            
-------------+------------------------+----------------------------------------------------------------
 id          | integer                | not null default nextval('funding_forecasts_id_seq'::regclass)
 project_id  | integer                | 
 year        | integer                | 
 currency    | character varying(255) | 
 payments    | integer                | 
 commitments | integer                | 

我们还有一个 exchange_rates 表,用于存储每年从基础货币到特定货币的汇率。

现在的问题是,当我们创建报告时,我们需要为每个项目查询大量的资金表,因此在应用程序端有大量的查询 + 大量的货币转换和聚合。

因为 Rails 对自定义 SQL 不是很灵活(我知道它可以,但很麻烦),我认为很酷的是或多或少透明地进行转换,也许使用允许简单的自定义数据类型聚合(使用 sum 和 +/- 等运算符).. 无论如何,我对此完全不确定,所以非常感谢所有评论!

最佳答案

您看过 Martijn van Oosterhout 的标记类型吗?

http://svana.org/kleptog/pgsql/taggedtypes.html

关于ruby - PostgreSQL 数据库中的货币转换和聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1652693/

相关文章:

ruby - 如何在使用 Ruby Mechanize 加载页面之前设置 Referer header ?

javascript - 使用连接表元数据创建 Rails 4 表单

postgresql - 条件 PostgreSQL 外键

postgresql - 解码从 postgresql 获得的对象的 Json 数组

sql - 如何在 postgres 中插入货币数据类型值

ruby - 如何并行遍历多个数组?

ruby - Rubocop:使用 next 跳过迭代

ruby-on-rails - 如何仅在使用 ElasticSearch 和 Tire 存在时按属性过滤搜索?

Postgresql order by desc nulls last on every query

php - 在应用 LIMIT 之前获取结果计数的最佳方法