SQl查询最大总和[重复]
Posted
技术标签:
【中文标题】SQl查询最大总和[重复]【英文标题】:SQl query on max summation [duplicate] 【发布时间】:2020-07-10 07:30:05 【问题描述】:我有两张桌子
单位
Unit_id
Unit_name
Unit_cost
组件
Component_id
Component_name
Unit_id
它们通过Unit_id
链接在一起。
我需要具有最高总成本 (Unit.Unit_cost) 的一个单元中的单个 Unit_name,所有组件都通过 Unit_id 链接到 Units 表>。请注意,我只需要 Unit_Name,而不需要总成本。
最好在查询中使用“Top(1)”吗?查询的外观如何?
【问题讨论】:
请向我们展示样本数据和预期结果。unit_cost
在unit
表中,所以不清楚components
对您的查询有何用途。
你可以使用rank()
函数
我将在单独的线程上重新发布我的问题
【参考方案1】:
我怀疑您希望所有组件都链接到最高成本单元。
如果是这样,您有几个选择。您可以使用窗口函数对每单位成本的记录进行排名:
select *
from (
select u.unit_name, c.*, rank() over(order by u.unit_cost desc) rn
from unit u
inner join components c on c.unit_id = u.unit_id
) t
where rn = 1
或者你可以加入一个得到最高单元的查询;假设您的数据库支持 T-SQL 语法top (1)
(您在问题中提到):
select u.unit_name, c.*
from (select top(1) with ties * from unit order by unit_cost desc) u
inner join components c on c.unit_id = u.unit_id
两个查询都允许平局:如果不同单位的成本最高,则它们的两个组件都将被列出。
【讨论】:
以上是关于SQl查询最大总和[重复]的主要内容,如果未能解决你的问题,请参考以下文章