首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL -如何通过涉及多列的计算获得每行的最大值

SQL -如何通过涉及多列的计算获得每行的最大值
EN

Stack Overflow用户
提问于 2020-03-06 17:26:55
回答 1查看 54关注 0票数 0

在计算中,Table1的每一行都应该在Table1和Table2中找到包含多个列的最大值。Table1由下列组成: ID、代码、Value1、Value2、Max_value Table2由ID、代码、Perc1、Perc2组成

代码语言:javascript
运行
复制
**Table1**

ID=1 (value1=1000, Value2=5000, Code=21);   Max_Value=? 
ID=2 (value1=2000, Value2=4000, Code=21);   Max_Value=?
ID=3 (value1=1000, Value2=5000, Code=21);   Max_Value=?

**Table2**

ID=25 (Perc1=5.2%, Perc2=3.5%, Code=21);    
ID=26 (Perc1=3.1%, Perc2=8.6%, Code=21);   
ID=27 (Perc1=2.5%, Perc2=3.4%, Code=21)


** Calculation**

formula:
    =[(1 ∗ 1)+(2 ∗ 2)]
              WHERE Table1.Code = Table2.Code

Max_Value (Table1.Id=1, Table2.Id=25) = 227
Max_Value (Table1.Id=1, Table2.Id=26) = 461 (max for ID 1)
Max_Value (Table1.Id=1, Table2.Id=27) = 195

Max_Value (Table1.Id=2, Table2.Id=25) = 224
Max_Value (Table1.Id=2, Table2.Id=26) = 406 (max for ID 2)
Max_Value (Table1.Id=2, Table2.Id=27) = 186

Max_Value (Table1.Id=3, Table2.Id=25) = 401
Max_Value (Table1.Id=3, Table2.Id=26) = 695 (max for ID 3)
Max_Value (Table1.Id=3, Table2.Id=27) = 313
EN

Stack Overflow用户

发布于 2020-03-06 19:52:49

如果我没记错的话,你想要joinrow_number()

代码语言:javascript
运行
复制
select t12.*
from (select t1.*, t2.*,
             (t2.perc1 * t1.value1 + t2.perc2 * t1.value2) as calc,
             row_number() over (partition by t1.id order by (t2.perc1 * t1.value1 + t2.perc2 * t1.value2) desc) as seqnum
      from table1 t1 join
           table2 t2
           on t1.code = t2.code
     ) t12
where seqnum = 1;

您的公式和解释暗示了table1中的code列,尽管我在示例数据中看不到它。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60561075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档