精华内容
下载资源
问答
  • 像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据。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.`合同号`);

    展开全文
  • 最终我们得到了一个键唯一,且相应键值为首个元素相同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

    展开全文
  • 正整数去重取最大值

    2017-08-24 09:14:40
    正整数去重取最大(字符组合和字符全排列)
    import java.util.*;
    
    /*
    正整数去重之后取最大数
    423234-->432
    4423-->423
    */
    
    public class Mian2 {
    
        public static void main(String[] args) {
    
            Scanner fin = new Scanner(System.in);
    
            // while (fin.hasNext()) {
    
            String str = fin.nextLine();
    
            // if (str.charAt(0) == '-') {
            // System.out.println(0);
            // break;
            // }
            Set<Character> set = new TreeSet<Character>();
    
            for (int i = 0; i < str.length(); i++) {
                set.add(str.charAt(i));
            }
    
            char[] c = new char[set.size()];
    
            Iterator<Character> it = set.iterator();
            int index = 0;
            while (it.hasNext()) {
                c[index] = it.next();
                index++;
            }
    
            List<Integer> list = new ArrayList<Integer>();
            permutation(c, 0, c.length - 1, list);
            System.out.println(list);
            //
            Object[] array = list.toArray();
            Arrays.sort(array);
    
            List<String> list1 = new ArrayList<String>();
            zuhe(str, list1, c.length);
    
            for (int i = array.length - 1; i >= 0; i--) {
                if (list1.contains(array[i].toString())) {
                    System.out.println(array[i]);
                    break;
                }
            }
            // }
        }
    
        // 字符组合
        public static void zuhe(String str, List<String> list, int length) {
            int count = (int) (Math.pow(2, str.length()) - 1);// 7
    
            for (int i = 1; i <= count; i++) {
                String ss = Integer.toBinaryString(i).toString();
                while (ss.length() < str.length()) {
                    ss = "0" + ss;
                }
                StringBuffer sb = new StringBuffer();
                for (int j = 0; j < ss.length(); j++) {
                    if (ss.charAt(j) == '1') {
                        sb.append(str.charAt(j));
                    }
                }
                if (sb.length() == length) {
                    list.add(sb.toString());
                }
                // System.out.print(sb + " ");
            }
    
        }
    
        // 字符排列
        public static void permutation(char[] s, int from, int to,
                List<Integer> list) {
            if (to <= 1)
                return;
            if (from == to) {
                StringBuffer sb = new StringBuffer();
                for (int i = 0; i < s.length; i++) {
                    sb.append(s[i]);
                }
                list.add(Integer.parseInt(sb.toString()));
            } else {
                for (int i = from; i <= to; i++) {
                    swap(s, i, from); // 交换前缀,使其产生下一个前缀
                    permutation(s, from + 1, to, list);
                    swap(s, from, i); // 将前缀换回,继续做上一个前缀的排列
                }
            }
        }
    
        public static void swap(char[] s, int i, int j) {
            char tmp = s[i];
            s[i] = s[j];
            s[j] = tmp;
        }
    
    }
    
    展开全文
  • 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)

     

     

     

     

    展开全文
  • 关于python排序分享最大值第二最大的方法python max 函数,取最大值,为什么10不比9大print(re_page)print(max(re_page))['1', '2', '3', '4', '5', '6', '7'...字符串比较的依据是:对于字符串s1和s2,逐个比较s1和...
  • 一、创建Oracle表  在Oracle中创建getmaxnum表 create table getmaxnum( id nvarchar2(20), ... 获取每个id中num最大的数据,比如:在id为1的数据中...3.因为查出的数据中有num最大值重复,使用distinct去重
  • oracle SQL 去重取最大值

    千次阅读 2014-05-31 11:43:58
    所以只能换一种思路了,我要查询数据的表示主键是自增长的sequence,这样就保证每次提交的新数据主键id都是最大的,所以可以通过分组并取最大值来获取客户提交的数据 蓝色部分就是叙述的内容: ...
  • 像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据。oracle方法: 在oracle中,我们可以简单地用over(partition by)函数处理(代码示例如下),解释一下...
  • 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 &gt; a.id )  
  • 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; }...
  • 这两天单位招人,问了一下数组去重取最大值最小值的方法,然后好多人都能说出es5的用法但是能说出es6的方法的寥寥无几,所以这里总结一下。 1、数组去重 let arr=[12,23,3,323,4,343,4,3] let newarr =Array....
  • 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...
  • 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 =...
  • 表Charts 如表Charts,value随id增加会变化,我们要取出每个用户最新的value。...#把表Charts根据ID列(ID越大,value最新)倒序,根据user_vid取出值最大ID对应的value。 time_l .append (time1)
  • //根据表ID 取出mogo数据 目标数据:取出重复企业,归属期最新数据,根据map-key自动替换,与list日期升序,代替冒泡/set等方法间接实现 public Map<String,Map> seMogoList(String tablID) { List<Map...
  • 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的数据 先根据单号...
  • 按某字段去重 保留按某个字段排序最大值 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:需要去重复的字段...
  • /** * 根据对象属性字段给list集合去重 * * @author Lance * @date 2017/03/14 */public class ListQC { public static void main(String[] args) { List&lt;User&gt; userList = new ...
  • 如果有个List如下图所示,我需要把这个List先把url 为空的过滤,然后根据id分组,date字段最大的对象,形成新的集合 List data = [ {"date":"2018-10-12", id:"1",url:"hdjf"}, {"date":"2018-10-13", id:...
  • 题意:有一个1e9*1e9的地图,从0,0开始走,只能向右,向下,向右下三种行走方式。地图上有n个坐标有权值val,若能通过向右下行走的方式达到这些坐标,就...在该坐标的左上角区域内的任意一个位置一个最大值继承。...
  • 问题:按cityid 分组 localid 最大值对应的Cellid 如图所示,开窗函数已经将最大值的同列cellid到了 但是该语句会涉及到很多重复的字段,所以我用到了去重,查询速度也是很快的 select distinct ...
  • ES聚合指标value_count: 计数cardinality: 去重计数avg: 平均值sum: 求和max: 最大值min: 最小值percentiles: 百分比top_hits: 简单来说就是聚合分组后从每一个组部分数据作为结果返回1, 基础数据 用户登陆信息 ...
  • 算法题中关于去重问题的解法(不同的):这类问题最好利用C++的map或set来做。 1087有多少不同的(20分) 当自然数n依次 1、2、3、……、N时,算式⌊n/2⌋+⌊n/3⌋+⌊n/5⌋有多少个不同的?(注:⌊x⌋为...

空空如也

空空如也

1 2 3 4 5
收藏数 91
精华内容 36
关键字:

去重取最大值