精华内容
下载资源
问答
  • 像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据。oracle方法:在oracle中,我们可以简单地用over(partition by)函数处理(代码示例如下),解释一下就是...

    像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据。

    79cd53d221b6603e55ae4184d81ab95a.png

    oracle方法:

    在oracle中,我们可以简单地用over(partition by)函数处理(代码示例如下),解释一下就是利用partition by函数按照合同号分区,在每个分区内再利用order by根据回款金额排序,where num=1的意思就是取每个分区中排序第一的那一行。

    select

    row_number()over(partition by 合同号 order by 回款金额 desc) as num

    from test where num=1

    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.`合同号`);

    运行结果:

    946e279032cf980f187b3099d1a9d9bc.png

    去重取最小值:

    如果是去重取最小值,那么代码如下,简单地说就是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.`合同号`);

    展开全文
  • 在Oracle中id去重取最大值

    千次阅读 2019-11-19 19:16:22
    一、创建Oracle表  在Oracle中创建getmaxnum表 create table getmaxnum( id nvarchar2(20), ... 获取每个id中num最大的数据,比如:在id为1的数据中...3.因为查出的数据中有num最大值重复,使用distinct去重

    一、创建Oracle表

           在Oracle中创建getmaxnum表

    create table getmaxnum(
        id nvarchar2(20),
        num nvarchar2(30),
        name nvarchar2(50)
    );

    二、添加数据

         在表中插入数据

    insert into getmaxnum values('1','2','zhangsan');
    insert into getmaxnum values('1','3','lisi');
    insert into getmaxnum values('2','1','wangwu');
    insert into getmaxnum values('2','4','zhaoliu');
    insert into getmaxnum values('3','5','tianqi');
    insert into getmaxnum values('3','6','wuming');
    insert into getmaxnum values('3','6','wuming');
    insert into getmaxnum values('3','1','wuming');
    

                                                                     

    三、业务需求

                获取每个id中num最大的数据,比如:在id为1的数据中,要求最终查询的数据是 num 为3 的数据

    四、执行sql

    select distinct(bb.num),bb.id,bb.name from (select max(num) num ,id  from getmaxnum group by id) aa left join getmaxnum bb on aa.num = bb.num 

    1. 通过group by 去重,因为在使用group by 去重时,可以使用max等函数,获取id的同时,获取每个id对应的最大num

    2. 然后通过左连接 ,查询num相同的数据

    3.因为查出的数据中有num最大值重复,使用distinct去重

    展开全文
  • 最终我们得到了一个键唯一,且相应键值为首个元素相同tuples中第3个值最大的这么一个字典。 因为你要求最终得到的类型是字典,所以接下来就是如果将这个字典dic转化为你要的字典,dic.alues()得到的是dic中所有的...

    list=[('小王', '第一次考试', '5'), ('小陈', '第二次考试', '7'), ('小陈', '第一次考试', '1'),('小王', '第六次考试', '20')]

    dic = {}

    list1=[]

    for person in list:

    if person[0] not in dic.keys():

    dic[person[0]] = person

    elif int(dic[person[0]][2]) 

    dic[person[0]] = person

    for value in dic.values():

    list1.append(value)

    print(list1)

    *.你看到的代码应该是没有缩进了,你可以右键>检查,从相应的源码中能看到相关的缩进

    ---------

    稍等我给你写下思路:

    总体的思路就是动态的改变字典dic,字典中的键是tuple的第1个元素,即人名,相应的键值就是整个tuple,如 dic={'小王': ('小王', '第一次考试', '5')}; 而a.这个字典中的键值对是不断增加的,b.键值是不断改变的.这里的a,b两点要怎么理解呢?

    先说a.这个字典中的键值对是不断增加的?

    比如说我一开始的字典是空的,然后我遍历字典的时候,我会拿每次取到的列表中的元素(即元素)的第1个元素作为键,去dic中找,看看当前dic中是否有这个键,如果没有,则我会在dic中新增一个键值对,这个键值对的键即tuple的第1个元素,相应的键值为整个tuple,举例:

    当前dic为{'小王': ('小王', '第一次考试', '5')},假如我遍历到list中的第2个元素,即 ('小陈','第二次考试','7') ,我会取这个tuple的第1个元素,即'小陈',看看dic字典的键中是否有'小陈',结果一看dic中只有一个键'小王',没有'小陈',则我会在dic中新增一个键值对,最后得到新的dic: {'小王': ('小王', '第一次考试', '5'), '小陈':('小陈','第二次考试','7')}.

    再一看b点:键值是不断变化的:

    接上面说,此时字典dic的值为{'小王': ('小王', '第一次考试', '5'), '小陈':('小陈','第二次考试','7')},然后列表我遍历到了第3个元素,即('小陈','第一次考试','1')。此时前面的处理逻辑还是一样的,取tuple中的第1个元素去dic的键中找,看看是否存在,一找存在,字典dic中有'小陈'这个键了,则继续第2步,用dic中'小陈'键值tuple中的第3个元素和当前从列表中取的第1个元素为'小陈'的tuple的第3个元素相比较,如果字典中的那个大,则字典中'小陈'的键值不变,如果从列表中拿到的这个tuple中第3个值大,则将字典中'小陈'的键值整个替换为从列表中取的这个当前tuple.

    最终我们得到了一个键唯一,且相应键值为首个元素相同tuples中第3个值最大的这么一个字典。

    因为你要求最终得到的类型是字典,所以接下来就是如果将这个字典dic转化为你要的字典,dic.alues()得到的是dic中所有值的这么一个迭代器,然后使用for循环遍历这个迭代器,把每次迭代器中取的值都追加到列表list1中。

    最终打印的list1,符合题目要求

    b3a030bfec1122aad2923e719c1e0a6b.png

    展开全文
  • oracle去重取最大值

    千次阅读 2014-10-09 10:14:15
    做一个查询需要提取每个人去重复之后最新的记录,刚开始用分组排序等方法觉得不行, distinct可以去掉重复的,但我还需要拿到...后来用max函数取最大id就可以实现了,下面是例子: select * from mdc_hyperte...

    做一个查询需要提取每个人去重复之后最新的记录,刚开始用分组排序等方法觉得不行,

    distinct可以去掉重复的值,但我还需要拿到这个表的主键id,这样distinct就不支持了。distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。

    后来用max函数取最大id就可以实现了,下面是例子:

    select *
      from mdc_hypertensionvisit
     where visitId in
           (select max(visitId)
              from mdc_hypertensionvisit
             where visitdate between to_date('2014-02-01', 'yyyy-MM-dd') and
                   to_date('2014-10-01', 'yyyy-MM-dd')
             group by empiId)

     

     

     

     

    展开全文
  • 如何用SQL排除重复结果只字段最大值的记录?要求得到的结果(即是PID相同的记录只ID值最大的那一条)。 代码如下:select * from [Sheet1$] awhere ID not exists (select 1 from [Sheet1$] where PID=a.PID and...
  • d = dict() d["Anna"] = 4.5 d["Boris"] = 18. d["Lisa"] = 18.5 d["Ahmmax(d.items(),key=lambda x:x[1])在说出...python如何列表去重取最大值?list=[('小王', '第一次考试', '5'), ('小陈', '第二次考试', '7'),...
  • oracle SQL 去重取最大值

    千次阅读 2014-05-31 11:43:58
    所以只能换一种思路了,我要查询数据的表示主键是自增长的sequence,这样就保证每次提交的新数据主键id都是最大的,所以可以通过分组并取最大值来获取客户提交的数据 蓝色部分就是叙述的内容: ...
  • select * from(select ROW_NUMBER() over (partition by u.prjviewid order by u.CreateTime desc) numm,* from tbl_option_bd_newzjfx u where u.prjviewid in ( select t.Id from TBL_ITEM t where t.SPAREFIELD15...
  • SQL去重取ID最大值

    千次阅读 2019-01-22 11:31:54
    select * from bas_app a where not exists ( select 1 from bas_app where AppName = a.AppName and id > a.id )  
  • df111_2[“dnum”] = df111_2[“dnum”].astype(int) 去重保留最大值 df.sort_values("Value", ascending = False).drop_duplicates(subset=["Date", "id"], keep="first") 2、hive regexp_extract 正则匹配 参考:...
  • 正整数去重取最大值

    2017-08-24 09:14:40
    正整数去重取最大(字符组合和字符全排列)
  • C81=IF(A81<>A80,MAX(C$80:C80)+1,C80)向下bai复制 G81=IFERROR(VLOOKUP(ROW(A1),IF({1,0},$C$81:$C$90,$A$81:$A$90),2,0),"")向下复制 H81=IF(G83="","",MAX(IF($C$81:$C$90=ROW(A1),$B$81:$B$90)))
  • mysql查询去重最大值筛选

    千次阅读 2018-12-03 12:48:43
    goodsinoutlog表是玩家充值记录表。RoleID为用户ID,NewValue为最新的充值总...而且还要取最大的NewValue的那一条。  表结构: mysql&gt; desc goodsinoutlog; +--------------+---------------------+---...
  • 根据最大值去重 如数据 单号 建议 时间 Z001 不行 1 Z001 再来 2 Z001 OK 3 Z002 不行 1 Z002 再来 2 Z002 OK 3 我要最后一次OK的数据 先根据单号...
  • sql取最大值问题

    千次阅读 2019-05-27 14:35:54
    select max(id) from… 取出来的值不是最大值,是因为字符串比较取最大值时,没有比较位数,比的是相同位的值的大小。
  • PGSQL去重取最新

    2020-08-07 16:50:54
    select a.* ,to_date(to_char(a.update_tm,'YYYY-01-01'),'YYYY-01-01') as 年份 from (select department,name,indicators_num,occurrences_num,update_tm,(select max(write_date) from plan_repair_...
  • 按某字段去重 保留按某个字段排序最大值 select * from tablename as a where not exists ( select 1 from tablename as b where b.name=a.name and b.id>a.id) talename:要去重复的表 name:需要去重复的字段...
  • js去重取最大值

    2019-09-11 23:32:20
    js的数组去重 1. var arr = [1,2,2,2,2,4,5,6,6,6,6,8,8,9,9,99] function uniquel(arr){ var hase = []; for(var i=0;i<arr.length;i++){ if(hase.indexOf(arr[i])==-1){ hase.push(arr[i]); } } return hase; }...
  • MySQL分组取最大值

    千次阅读 2019-02-13 09:46:21
    先进行分组查询最大ID ,以此作为依据 链接查询原表 取出数据 目前测试20万条数据只需5s SELECT * FROM(SELECT MAX(id) AS max_id FROM fc_clw_status GROUP BY mac_id) t INNER JOIN fc_clw_status d on d.id =t....
  • 如何COUNT后最大值

    2021-05-04 05:26:36
    PRE02 CHANNEL CNT ----- ------- ---------- A U 3 B K 2 C Y 3 SQL> 如果你非要用max keep(), 方法如下, 但是有个问题, 如果同样的PRE02, CHANNEL最大数量的超过一个, 那还是要用我前面给的方法 ...
  • 01 - 数据类型

    2021-02-10 02:29:58
    max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。 min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。 math.ceil(x) 向上取整,如math.ceil(4.1) 返回 5 math.floor(x) 向下取整,如math.floor(4.9)...
  • 流的操作数据求和最大值最小值最小值过滤排序 基本数据 ArrayList<Student> lists = new ArrayList<>(); lists.add(new Student("张三", 15, 1541)); lists.add(new Student("李四", 19, 1549)); ...
  • 背景:从下边数据中去重用户id,并按用户价格的最大值降序排序。 SELECT user_id,price,living_id FROM living_auction_record WHERE living_id = 495 AND stage = 2 ORDER BY price DESC ; 方法一:用子查询,...
  • 主要介绍了Python DataFrame使用drop_duplicates()函数去重(保留重复重复),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • var arr = [2,4,1,-1,9] ...//取最大值 var maxValue = arr.reduce(function(a,b){ return a>b?a:b }) console.trace('maxValue->',maxValue) //数组去重 var arr1 = [2,3,4,5,6,7,4,6,3] let $arr1 =...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,275
精华内容 11,710
关键字:

去重取最大值