怎样做咨询网站,如何制作外贸网站,企业网站开发定制,wordpress 怎么添加即时联系窗口像下表一样的数据#xff0c;有重复的合同号#xff0c;但是我只想保留同一合同号中回款金额最大的那一行#xff0c;也就是图中红框里的数据。oracle方法#xff1a;在oracle中#xff0c;我们可以简单地用over(partition by)函数处理#xff08;代码示例如下#xff0… 像下表一样的数据有重复的合同号但是我只想保留同一合同号中回款金额最大的那一行也就是图中红框里的数据。oracle方法在oracle中我们可以简单地用over(partition by)函数处理代码示例如下解释一下就是利用partition by函数按照合同号分区在每个分区内再利用order by根据回款金额排序where num1的意思就是取每个分区中排序第一的那一行。
select
row_number()over(partition by 合同号 order by 回款金额 desc) as num
from test where num1
mysql方法但是在mysql中并没有这样的函数我们需要重新写逻辑代码如下老规矩解释一下第二个select函数是关键所在功能就是当a.合同号 b.合同号时我们取出最大的回款金额当a.回款金额等于这个最大的回款金额时我们认为这一行符合条件并取出因此a中的每个合同号我们都要执行一次第二个select函数来判断当前合同号的这一行是否是最大回款金额的这一行。
SELECT a.合同号, a.姓名, a.回款金额
FROM test a WHERE a.回款金额
(SELECT MAX(b.回款金额) FROM test b WHERE a.合同号 b.合同号);运行结果去重取最小值如果是去重取最小值那么代码如下简单地说就是oracle【改升序为降序】mysql【改最大值为最小值】。#oracle
select
row_number()over(partition by 回款金额 order by 回款金额 ASC) as num
from test#mysql
SELECT a.合同号, a.姓名, a.回款金额
FROM test a WHERE a.回款金额
(SELECT MIN(b.回款金额) FROM test b WHERE a.合同号 b.合同号);