下面是我的一个子查询的输出。我卡在了一点。
ID | Principal | Price | Difference
102522 | 47000 | 99.9285 |
102522 | 47000 | 100.6801 |
102522 | 47000 | 99.9285 |
102522 | 47000 | 100.6801 |
102522 | 47000 | 99.9285 |
102522 | 47000 | 100.6801 |
1048798 | 280000 | 102.3823 |
1048798 | 280000 | 102.3666 |
1048798 | 280000 | 102.3823 |
1048798 | 280000 | 102.3666 |
1048798 | 280000 | 102.3823 |
1048798 | 280000 | 102.3666 |
1048798 | 280000 | 102.7026 |
我想填充差异列。
它应该是给定 ID 的最高价格与特定 ID 的价格之间的差值。
例如。
ID | Principal | Price | Difference
102522 | 47000 | 99.9285 | 100.6801 - 99.9285
102522 | 47000 | 100.6801 | 100.6801 - 100.6801
102522 | 47000 | 99.9285 | 100.6801 - 99.9285
102522 | 47000 | 100.6801 | 100.6801 - 100.6801
102522 | 47000 | 99.9285 | 100.6801 - 99.9285
102522 | 47000 | 100.6801 | 100.6801 - 100.6801
1048798 | 280000 | 102.3823 |
1048798 | 280000 | 102.3666 |
1048798 | 280000 | 102.3823 |
1048798 | 280000 | 102.3666 |
1048798 | 280000 | 102.3823 |
1048798 | 280000 | 102.3666 |
1048798 | 280000 | 102.7026 |
我将不胜感激关于我应该如何进行的任何指示?
最佳答案
你想要的是你的最大值的窗口函数。 MAX(Price) OVER (PARTITION BY ID)
将为您提供每行每个 ID 的最高价格,然后您只需减去该行的价格,因此您的语句如下所示
Select ID, Pricipal, Price, MAX(Price) OVER (PARTITION BY ID) - Price AS Difference
FROM (subquery)
关于mysql - 通过查找最大值来填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552379/