Postgresql 错误:必须出现在 GROUP BY 子句中或在聚合函数中使用

2024-04-10

在您将其标记为重复之前,我尝试了同一个网站上给出的几种解决方案,但没有一个起作用。

My query

SELECT 
  temp_fk_settlements.sku, 
  temp_fk_settlements.order_item_id, 
  temp_fk_settlements.order_date, 
  sum(temp_fk_settlements.order_item_value), 
  sum(temp_fk_settlements.total_marketplace_fee), 
  sum(temp_fk_settlements.service_tax), 
  sum(temp_fk_settlements.settlement_value), 
  sum(temp_fk_settlements.commission), 
  sum(temp_fk_settlements.fixed_fee), 
  sum(temp_fk_settlements.shipping_fee), 
  sum(temp_fk_settlements.reverse_shipping_fee), 
  sum(temp_fk_settlements.invoice_amount)
FROM 
  temp_fk_returns, 
  temp_fk_settlements
WHERE
  temp_fk_settlements.order_item_id = temp_fk_returns.order_item_id and
  temp_fk_returns.return_type = 'customer_return'
GROUP BY
  temp_fk_settlements.order_item_id

My ERROR

ERROR:  column "temp_fk_settlements.sku" must appear in the GROUP BY clause or     
 be used in an aggregate function
LINE 2:   temp_fk_settlements.sku, 

如果我尝试删除 temp_fk_settlements.sku 列,它仍然会在不同的列上给我错误。我被困住了,因为没有一个解决方案有效。

我想根据 order_item_id 对结果进行分组。

我的表结构是

temp_fk_结算:

Create table temp_fk_settlements(
    settlement_reference_no varchar(50),
    order_type char(20),
    fulfillment_type varchar(25),
    sku varchar(25),
    order_id varchar(25),
    order_item_id varchar(25),
    order_date date,
    dispatch_date date,
    delivery_date date,
    cancellation_date date,
    settlement_date date,
    order_status varchar(25),
    quantity integer,
    order_item_value integer,
    refund integer,
    protection_fund integer,
    total_marketplace_fee double precision,
    service_tax double precision,
    settlement_value double precision,
    commission_rate integer,
    commission double precision,
    fee_discount double precision,
    cancellation_fee double precision,
    fixed_fee integer,
    emi_fee double precision,
    total_weight float,
    shipping_fee double precision,
    reverse_shipping_fee double precision,
    shipping_zone char(15),
    token_of_apology double precision,
    pick_and_pack_fee double precision,
    storage_fee double precision,
    removal_fee double precision,
    invoice_id varchar,
    invoice_date date,
    invoice_amount integer,
    sub_category char(25),
    total_offer_amount double precision,
    my_offer_share double precision,
    flipkart_offer_share double precision
)

temp_fk_返回:

CREATE TABLE temp_fk_returns(
    return_id VARCHAR(25),
    order_id VARCHAR(25),
    order_item_id VARCHAR(25),
    product_id VARCHAR(25),
    title VARCHAR(100),
    sku VARCHAR(25),
    quantity INTEGER,
    total_price INTEGER,
    return_requested_on DATE,
    return_initiated_on DATE,
    return_tracking_id VARCHAR(25),
    status VARCHAR(25),
    reason VARCHAR(150),
    sub_reason VARCHAR(150),
    customer_comments VARCHAR,
    return_type VARCHAR(25)
)

如果你看一下查询的逻辑,你可以看到why出现此错误:

SELECT 
  temp_fk_settlements.sku, 
  temp_fk_settlements.order_item_id, 
  temp_fk_settlements.order_date

这表示对于每一行,您想要sku, order_item_id, and order_date.

GROUP BY
  temp_fk_settlements.order_item_id

这表示您希望每个唯一的一行order_item_id,无论其他什么不同。

所以,如果有超过sku or order_date对于相同的order_item_id,数据库将无法知道要为您提供哪些值。 MySQL 只会猜测,但 Postgres(像大多数其他数据库系统一样)会告诉您更改查询。

在这种情况下,您可能知道每个order_item_id对应于单个值sku and order_date,所以你可以将它们全部添加到GROUP BY clause:

GROUP BY
  temp_fk_settlements.sku, 
  temp_fk_settlements.order_item_id, 
  temp_fk_settlements.order_date

这表示您希望这三个字段的每个唯一组合都占一行,因此可以查看组合中的所有项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Postgresql 错误:必须出现在 GROUP BY 子句中或在聚合函数中使用 的相关文章

  • 需要在 SQL Server 中透视字符串值

    我有一个包含值的表 描述为 Occupation String Name String Developer A Developer B Designer X Coder Y Coder Z 我需要数据透视格式的值 Designer Deve
  • 手动将数据库中的数据插入具有 hibernate_sequence @GenerateValue(strategy = GenerationType.TABLE) 的表中

    我有 ID 为 GenerateValue strategy GenerationType TABLE 的表 需要在postgresql生产数据库上手动插入800条记录 我们从oracle迁移到postgresql 很少有用户错误地访问旧链
  • SKIP加锁和nowait的区别

    pl sql 中 SKIP 锁定游标和 nowait 游标之间的区别 我认为我找到的这张图片是描述差异的最佳例子 详细说明 http viralpatel net blogs oracle skip locked
  • 基本的多对多sql选择查询

    我认为这应该很容易 但它却在逃避我 我的帐户和帐户组之间存在多对多关系 一个帐户可以位于零个或多个组中 因此我使用标准连接表 Accounts ID BankName AcctNumber Balance AccountGroups ID
  • 默认情况下在sql日期时间列中插入null/空值

    如何在 SQL Server 中创建一个表 默认日期时间为空 而不是1900 01 01 00 00 00 000我得到了 我的意思是 如果没有插入值 则默认值应该为 null 空等 如果没有插入值 默认值应该是null empty 在表定
  • Oracle SQL PLS-00049:错误的绑定变量

    我收到此错误 这似乎是列拼写问题 然而 我 99 确信我拼写的所有内容都是正确的 但我看不出有任何理由会出现我所犯的错误 这是来源 CREATE OR REPLACE TRIGGER update qoh trigger AFTER INS
  • CONTAINS 不适用于 Oracle Text

    我在执行此查询时遇到问题 SELECT FROM gob attachment WHERE CONTAINS gob a document java gt 0 它给了我 ORA 29902 error in executing ODCIIn
  • Mac 上用户“postgres”的密码身份验证失败

    我在创建新的 psql 用户时遇到问题 因为我无法以 postgres 身份登录 psql 我已尝试过 1 sudo u postgres psql 2 sudo u postgres createuser img site P s e 他
  • 为什么 ISNUMERIC('.') 返回 1?

    最近我在 SQL Server 中使用 ISNUMERIC 时遇到了一个问题 导致找到了这段代码 SELECT ISNUMERIC 这会返回 1 如 true 所示 难道不应该像 false 一样返回 0 吗 See Numeric 损坏了
  • 替换字符串中的多个字符,而不使用任何嵌套替换函数

    我的表中存储了一个方程 我一次获取一个方程 并希望将所有运算符替换为任何其他字符 输入字符串 N 100 6858 6858 N 100 0 2 N 35 运算符或模式 替换字符 输出字符串 N 100 6858 6858 N 100 0
  • 如何在 MySQL 中构建跨数据库查询?

    我在同一台服务器上有两个数据库 谷歌给了我一些提示 但我找不到任何 官方 的东西 有人可以向我指出解释如何执行此操作的文档吗 使用 PHP 进行解释也很有用 谢谢 我在同一台服务器上有两个数据库 如何在 MySQL 中构建跨数据库查询 您可
  • 如何在Word 2010中从SQL数据库检索数据?

    我想用 MS SQL 数据库中的数据填充 Word 文档 这可能吗 如果可能的话 如何实现 我过去曾通过多种方式做到这一点 这取决于用户是从 Microsoft Word 外部还是从 Microsoft Word 内部启动操作 From I
  • Rails 中 WHERE 子句中的 ALL 运算符

    关联关系如下图所示 InstructorStudent has many fees Fee belongs to instructor student 我想要获得在所有给定数组中具有每月详细信息的指导学生 如果其中任何一个中不存在每月详细信
  • 复杂的sql树行

    表结构 id message reply id 1 help me 0 434 love to 1 852 didn t work 434 0110 try this 852 2200 this wont 0 5465 done 0110
  • 使用来自另一个的 SELECT 更新表,但字段为 SUM(someField)

    基本上我有这样的事情 UPDATE Table SET Table col1 other table col1 FROM Table INNER JOIN other table ON Table id other table id 问题是
  • PostgreSQL 和锁定

    希望一些比我更聪明的 DBA 可以帮助我找到一个好的解决方案来完成我需要做的事情 为了便于讨论 我们假设我有一个名为 work 的表 其中包含一些列 其中一列表示给定客户端对该行工作的所有权 场景是 我将连接 2 个客户端并轮询表以查找要完
  • 使用 SQL 完全复制 postgres 表

    免责声明 这个问题和栈溢出问题类似here https stackoverflow com questions 198141 copy a table including indexes in postgres 但这些答案都不适用于我的问题
  • SQL。 SP 或函数应计算周五的下一个日期

    我需要编写一个存储过程来返回给定日期的下周五日期 例如 如果日期是 05 12 2011 那么它应该返回下周五日期 05 13 2011 如果您通过 05 16 2011 那么它应该返回日期是 5 20 2011 星期五 如果您将星期五作为
  • 访问数据库 LIMIT 关键字

    我试图让我的页面列表功能在 ASP 中与 Access 数据库一起工作 但我不知道 Microsoft SQL 中 LIMIT 的替代方案 我已经尝试过 TOP 但这似乎不起作用 这是 MySQL 中使用的语句 SELECT FROM cu
  • MYSQL 按喜欢/不喜欢和受欢迎程度排序

    我有评论表 其中包括喜欢和不喜欢的内容 现在我在正确的顺序上遇到了问题 实际上 我的系统在顶部显示了最多点赞的评论 我正在 youtube 上寻找类似系统的东西 这意味着 100like 100dislikes 的评论的顺序高于 1 1 我

随机推荐

  • 如何使用 pandas 计算所有列之间的相关性并删除高度相关的列?

    我有一个巨大的数据集 在机器学习建模之前 总是建议您首先应该删除高度相关的描述符 列 我如何计算列wice相关性并删除具有阈值的列 例如删除所有列或描述符具有 gt 0 8 的相关性 它还应该保留减少数据中的标题 示例数据集 GA PN P
  • Web API 2 OData = $format 不起作用:请求始终被忽略

    我有一个 Web API OData 项目 一切都运行良好 我现在尝试使用 format 参数返回 xml 而不是 JSON 而不是指定标头请求 但它不起作用 我尝试过这些方法 http localhost 3845 api Custome
  • Google Apps 脚本用于计算昨天收到的具有特定标签的电子邮件数量,然后将 # 每天保存到电子表格

    基本上就是标题所说的 但我想 1 自动计算我的 Gmail 帐户收到的带有特定标签的电子邮件数量 2 每天数一次 即使是零 3 每天向 Google 电子表格报告 4 所以我可以制作这样的月度报告 日期 日期 日期 10 月总计 平均每天
  • Python Tkinter - 恢复原始默认键绑定

    我正在 Win7 机器上使用 Python 2 7 和 Tkinter GUI 在某些情况下 我想完全覆盖 Tab 键的正常默认行为 但前提是存在某些条件 之后我想恢复到默认行为 请注意 目前我对 Tab 键感兴趣 但在某些时候我可能也需要
  • 表格单元格背景渗透到圆角表格中

    正如可以看到的这个演示 http jsfiddle net ZFYvq 其中表格设置有圆角 特别是右上角和左下角 这些角会被其包含的单元格的背景颜色破坏 我尝试应用一些padding到桌子上 但这并没有帮助 我唯一的选择是添加额外的列和行并
  • 树视图 - 突出显示多个项目

    在 Powerbuilder 中 这里有人知道我如何在树视图上突出显示多个项目吗 Selecteditem 函数没有这样做 我正在寻找 Selectedrow id 正在做的行为 Thanks 我自己没有尝试过 但有一个例子代码交换 htt
  • 使用带有 1 字节变量的 Python struct.unpack

    我该如何使用struct unpack 或 Python 中可用的其他一些函数可以轻松转换one字节变量到Python整数 现在 它是以一种相当蹩脚的方式完成的 file open telemetry dat rb read magic f
  • 对数字字符串映射的字符串进行排序

    我们有一个关于字符串排序的问题 在这种情况下排序不起作用 1 A 1 B 10 A 10 B 9 A 9 B 我们真正想要的是 1 A 1 B 9 A 9 B 10 A 10 B 如果我们将其作为字符串排序 结果将类似于第一部分 如果我们先
  • 在java中旋转图像

    我正在寻找旋转图像 我有一个JInternalFrame其中包含一个JLabel 标签包含图像 旋转图像后 我需要调整内部框架的大小 我当前的代码旋转图像 但图像边缘周围有黑色并且偏离中心 对于如何解决这个问题 有任何的建议吗 public
  • 使用expect进行无人值守(无提示)Homebrew安装

    根据Homebrew安装说明 可以使用以下命令进行安装 ruby e curl fsSL https raw github com Homebrew homebrew go install 这可行 但需要用户输入两次 确认安装并在脚本调用的
  • 在 Ruby 中生成 Paypal 签名“X-PAYPAL-AUTHORIZATION”

    Ruby 中是否有任何库可以生成签名 X PAYPAL AUTHORIZATION 代表通过 paypal Permissions API 授权我们的账户持有人进行调用时需要的标头 我完成了权限流程并获取了所需的访问令牌 tokenSecr
  • 在 Oracle SQL 中从当前日期减去 30 年

    我需要编写一个查询 选择所有出生日期在 30 年前的人 不幸的是 由于我使用的是 Oracle 所以我无法使用DATEADD 功能 我目前已经得到了这个 但显然这不是动态的 并且不会随着时间的推移而改变 SELECT Name DOB FR
  • 无法修改 Dictionary 的返回值,因为它不是变量

    有这样的错误 无法修改 System Collections Generic Dictionary this string 的返回值 因为它不是变量 My code Dictionary
  • Mysql 的 Doctrine 查询

    我想创建一个 Doctrine 查询 Doctrine 2 3 SELECT FROM car WHERE plate like AND datetime BETWEEN 2013 03 13 22 20 18 AND 2013 03 13
  • Ruby 进程之间的共享变量

    我有一个 Ruby 程序 可以加载两个非常大的 yaml 文件 因此我可以通过分叉一些进程来利用多核来提高速度 我尝试过寻找 但我无法弄清楚如何或是否可以在不同的进程中共享变量 以下代码是我目前拥有的 proteins decoyProte
  • 在 Moq 中模拟通用方法而不指定 T

    我有一个接口 其方法如下 public interface IRepo IA
  • Docker Compose 在 v2 中注入链接容器

    在 Docker Compose v1 中 etc hosts文件已使用链接的容器进行更新 例如 cat etc hosts 127 0 0 1 localhost 1 localhost ip6 localhost ip6 loopbac
  • 分布式版本控制系统真的没有集中存储库吗?

    这似乎是一个愚蠢的问题 但是如何在没有服务器可供检出的情况下设置工作目录呢 企业如何保存存储库的安全备份副本 我认为必须有一个中央仓库 但是它到底是如何 分布 的 我一直认为服务器 客户端 SVN 与点对点 GIT 的区别 但我不认为这是正
  • 单元测试 AuthorizationHandler

    我在 NET Core 2 1 中使用了基于资源的授权模式 如下所述 我唯一的问题是我不知道如何测试我的AuthorizationHandler干净地 这里有人已经做过类似的事情了吗 AuthorizationHandler示例 来自上面的
  • Postgresql 错误:必须出现在 GROUP BY 子句中或在聚合函数中使用

    在您将其标记为重复之前 我尝试了同一个网站上给出的几种解决方案 但没有一个起作用 My query SELECT temp fk settlements sku temp fk settlements order item id temp