将 DISTINCT 与 MAX Aggregate 一起使用

问题描述 投票:0回答:1

为什么命令Sql的输出提到此查询语句的错误消息:

SELECT Distinct SupplierId, max(Price)
FROM Products;

我试图在双列一行条目中提及具有最高价格的供应商ID。 有什么建议或例子可以澄清这个问题吗? 非常感谢。

syntax-error postgresqlstudio
1个回答
0
投票

问题在于

max
是聚合,即组的标量值,而
id
是未分组的项目。您可以通过以下方式实现您想要的:

SELECT SupplierId, max(Price)
FROM Products
GROUP BY SupplierId;

这就是您在查询中创建聚合列的方式,基本上指定您将从记录中获得组,其供应商 ID 对于每个组都是唯一的,并且具有与您拥有的不同供应商 ID 一样多的组,这样就清楚了

SupplierId
适用于您的每个小组,您还可以通过计算其最大值来汇总价格。
想象一下当您有 1000 条具有不同供应商 ID 的记录时的情况。如果您必须在不分组的情况下推断该值,那么您将无法这样做,因为可能有很多这样的值。但是,如果你按照我的建议对供应商 ID 进行分组,那么每个组的供应商 ID 就会很清楚。

© www.soinside.com 2019 - 2024. All rights reserved.