0

我有以下在 sqlite 中工作的代码行,但在 PostGres 中没有:

@income_by_category = SoldCategory.group(:category_name).having("branch_id=?", @branch_id).sum(:total).to_a

它基本上是将所有具有相同的SoldCategoryby分组,添加所有的',并将其转换为数组。我正在使用它为某些图表提供一些数据。它给了我类似的结果::category_name@branch_id:total

[['shoes', 5000], ['pants', 6000], ['shirts', 7000]]

如何使用 PostGress 获得相同的结果?

4

1 回答 1

1

因此,您想获取所有sold_categories给定的值branch_id,然后找到每个类别的总和吗?你的方法有点偏离,HAVING 不是你想要的。您想要的 SQL 就是这样的:

select category_name, sum(total)
from sold_categories
where branch_id = ?
group by category_name

并通过 ActiveRecord 转化为:

SoldCategory.where(:branch_id => @branch_id).sum(:total, :group => :category_name)

这将为您提供一个不错的哈希,如下所示:

{ 'shoes' => 5000, 'pants' => 6000, 'shirts' => 7000 }

解决此问题后,下一步应该是在开发环境中安装 PostgreSQL,以便您可以使用相同的数据库进行开发和部署。数据库之间有很多小的差异,没有 ORM 可以保护您;数据库可移植性是一个神话,除非您的需求非常简单,或者您编写自己的可移植性层并测试测试测试测试并进行更多测试,然后运行更多测试以确保您已经测试了在您关心的每个数据库上使用的每个代码路径关于。

于 2013-09-17T22:02:15.293 回答