如何解决PostgresqlRails 3合并列同一表上的行
|| 首先,我永远都在使用mysql,现在正在升级到postgresql。 sql语法要严格得多,并且某些行为有所不同,因此是我的问题。 我一直在寻找如何在诸如表的Postgresql查询中合并行id | name | amount
0 | foo | 12
1 | bar | 10
2 | bar | 13
3 | foo | 20
并得到
name | amount
foo | 32
bar | 23
我发现的最接近的是将重复记录合并为1个具有相同表和表字段的记录
sql返回\'name \'的重复项:
scope :tallied,lambda { group(:name,:amount).select(\"charges.name AS name,SUM(charges.amount) AS amount,COUNT(*) AS tally\").order(\"name,amount desc\") }
我需要的是
scope :tallied,:amount).select(\"DISTINCT ON(charges.name) charges.name AS name,amount desc\") }
除了返回给定名称的第一行,而不是返回给定名称(添加的金额)的所有行的混搭
在mysql中,将.group(:name)
(不需要初始组)附加到选择项将按预期工作。
这似乎是一项日常工作,应该很容易。这样做的简单方法是什么?请指出正确的道路。
附言我正在尝试在这里学习(其他人也在学习),不要只是将sql放在我的脸上,请解释一下。
解决方法
我不知道RoR在后台执行的操作,但是我猜ѭ5会运行按名称,数量分组的查询。您要寻找的是
group by name
:
select name,sum(amount) as amount,count(*) as tally
from charges
group by name
如果将``8''附加到``9''子句中,则查询将执行此操作-即``10''将返回每个名称出现的每个数量的次数,而``11''将返回该数量乘以该数量的次数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。