如何选择具有最大发票价值的客户名称[关闭]

Posted

技术标签:

【中文标题】如何选择具有最大发票价值的客户名称[关闭]【英文标题】:How to select customer names with maximum invoice value [closed] 【发布时间】:2021-01-06 03:35:30 【问题描述】:

我有两张桌子

Customers
----------------
ID  | Name 
----+-----------
123 | Name1
456 | Name2
789 | Name3
----------------


Invoices
------------------
ID  | Value
----+-------------
123 | 1000
456 | 500
789 | 1000
------------------

我想选择发票金额最高的客户名称

【问题讨论】:

你想要这个样本数据的哪个结果?另外,如果客户有多张发票怎么办? 您想要获得最高客户,还是想要获得发票金额按降序排列的多个客户? 我想获取发票金额最高的客户姓名,在这种情况下,发票金额最高为 1000,结果应该是 name1 和 name3 无论客户是否有多张发票,只要其中一张发票等于最高发票价值,他的名字就应该被退回 你得到答案了吗?你能告诉你正在使用的 mysql 版本吗? 【参考方案1】:

我们也可以通过子查询获得结果。 使用带有值和名称的 [] 括号。因为这是SQL server中的保留关键字

SELECT C.ID, C.[Name], I.[Value]
FROM Customers C WITH(NOLOCK)
JOIN (
       SELECT TOP 1 ID, [Value]
       FROM Invoices WITH(NOLOCK)
       ORDER BY [Value] DESC
      ) AS I
ON C.ID = I.ID

【讨论】:

这是一个 mysql 问题的 sqlserver 答案 - 代码不可传输,因此您可能会吸引反对票 他已经提到了SQL和我的SQL。请检查定义和他的评论@P.Salmon 请查看 sql 标签——这并不意味着 OP 正在使用 sqlserver——这就是为什么存在标签以更准确地识别问题所在的 sql 方言的原因。如果 OP 想要 sqlserver,那么有一个标签。【参考方案2】:

根据最大值测试

select c.name , i.value
from customers c
join invoices i on i.id = c.id
where i.value = (select max(value) from invoices);

+-------+-------+
| name  | value |
+-------+-------+
| Name1 |  1000 |
| Name3 |  1000 |
+-------+-------+
2 rows in set (0.001 sec)

【讨论】:

它确实有效,谢谢

以上是关于如何选择具有最大发票价值的客户名称[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何选择具有最大值的行的所有列

如何选择最大的视图值? [关闭]

如何选择混合字符串/整数列的最大值?

如何将选择结果分配给变量?

如何选择不同日子的兑换价值? [关闭]

crm软件如何把客户价值最大化?