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_costunit 表中,所以不清楚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查询最大总和[重复]的主要内容,如果未能解决你的问题,请参考以下文章

一个带有两个where子句的查询中的两个sql总和[重复]

如何查询mysql一个字段的最大值的总和

SQL查询用于查找用户每月的最大金额[重复]

如何在 MySQL 查询中找到最大总和的关联名称?

sql怎么添加自定义列并且将此列的数据作为条件查询

SQL查询以在一组语句中查找最大值[重复]