在 MySQL 中工作的 SQL 语句在 Postgresql 中不起作用 - Sum &group_by rails 3 [英] SQL statement working in MySQL not working in Postgresql - Sum & group_by rails 3

查看:37
本文介绍了在 MySQL 中工作的 SQL 语句在 Postgresql 中不起作用 - Sum &group_by rails 3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我对一般的 SQL 工作还很陌生,更不用说 Rails,但我有这个适用于 MySQL 的语句:

So I'm very new to working in SQL in general, let alone rails but I have this statement that works in MySQL:

portfolio_values.select("portfolio_values.*, SUM(portfolio_values.value) as totals").group("portfolio_values.day").map(&:totals)

但是在 postgresql 中会抛出这个错误:

But in postgresql is throws this error:

GError:错误:portfolio_values.id"列必须出现在 GROUP 中BY 子句或在聚合函数中使用:SELECT投资组合值.*,SUM(portfolio_values.value) 作为总计 FROM"portfolio_values" WHERE "portfolio_values"."user_id" = 3 GROUP BY投资组合值.day ActiveRecord::StatementInvalid: PGError: 错误:列portfolio_values.id"必须出现在 GROUP BY 子句中或者是在聚合函数中使用

GError: ERROR: column "portfolio_values.id" must appear in the GROUP BY clause or be used in an aggregate function : SELECT portfolio_values.*, SUM(portfolio_values.value) as totals FROM "portfolio_values" WHERE "portfolio_values"."user_id" = 3 GROUP BY portfolio_values.day ActiveRecord::StatementInvalid: PGError: ERROR: column "portfolio_values.id" must appear in the GROUP BY clause or be used in an aggregate function

我只是不明白它说我应该做些什么不同的事情?

I just don't really understand what its saying I should be doing differently?

推荐答案

您只需将 portfolio_values.id 列添加到 GROUP BY 语句 - 如下所示:

You just have to add the portfolio_values.id column to the GROUP BY statement - like so:

portfolio_values.select("portfolio_values.*, SUM(portfolio_values.value) as totals").group("portfolio_values.id, portfolio_values.day").map(&:totals)

编辑

虽然这是有效的 SQL,但它不是一个有用的查询 - 请参阅其他帖子.

EDIT

While this is valid SQL, it's not a useful query - see other post.

这篇关于在 MySQL 中工作的 SQL 语句在 Postgresql 中不起作用 - Sum &group_by rails 3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆