如何选择具有最大发票价值的客户名称[关闭]
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)
【讨论】:
它确实有效,谢谢以上是关于如何选择具有最大发票价值的客户名称[关闭]的主要内容,如果未能解决你的问题,请参考以下文章