Sql server SQL Server:获取每个人的最大购买价值
我有以下疑问Sql server SQL Server:获取每个人的最大购买价值,sql-server,max,Sql Server,Max,我有以下疑问 select C.Persona, C.Producto, Sum(C.Cantidad * P.Precio) [Total_Purchase] from Compras C join Precios P on C.Producto = P.Item group by C.Producto, C.Persona 它返回每个客户(角色)对每个产品的总购买量。 如何让它为每个客户和所涉及的产品带来最大总购买量?您可以使用Max()函数来实现这一
select
C.Persona, C.Producto, Sum(C.Cantidad * P.Precio) [Total_Purchase]
from
Compras C
join
Precios P on C.Producto = P.Item
group by
C.Producto, C.Persona
它返回每个客户(角色)对每个产品的总购买量。
如何让它为每个客户和所涉及的产品带来最大总购买量?您可以使用Max()
函数来实现这一点。您可以将它添加到select中,即使使用了SUM()
,它也可以工作
试试这个:
select
max(c.[Total_Purchase]), C.Producto ,C.Persona
from
(select
C.Persona, C.Producto, Sum(C.Cantidad*P.Precio) [Total_Purchase]
from
Compras C
join
Precios P on C.Producto = P.Item
group by
C.Producto, C.Persona) c
group by
C.Producto, C.Persona
将总和聚合更改为最大值 或者两者兼而有之
select C.Persona,C.Producto,
Sum(C.Cantidad*P.Precio) [Total_Purchase],
MAX (C.Cantidad*P.Precio) [Total_Purchase
from
Compras C JOIN Precios P ON C.Producto=P.Item
group by C.Producto ,C.Persona
但是我不想要其他没有最大值的行。我不确定我是否遵循了你想要的。这听起来像是你在收回他们的购买总额,并想在另一列中查看他们最大的购买额。如果是这样的话,
MAX()
就是您想要的。如果没有,你能试着更好地解释一下吗?让我们在我的表格中说,对于Thomas,我有3行3种不同的产品(水、薯条、葡萄酒),每个产品在我的“总购买”栏中都有每种产品的总花费。我有杰瑞也与3个产品,但不同于托马斯,也与总花费。在这个例子中,我有6行(我的查询所带来的),但我只希望2行是Tom的最大购买量和它是什么产品,Jerry也是如此。要只返回两行,您可以按人分组,而不是按产品分组。因此,您可以通过从组中删除C.Producto
。一旦您这样做,在选择中使用MAX()
将得到您想要的结果。如果您想要这两者,您现在拥有的,以及我们在这里讨论的一个人的最大值,那么您需要使用子查询。