java和mysql进行排序和排名

目录

一、基于java排序和排名

1、数值相同,排名相同,排名连续

2、数值相同,排名相同,排名不连续

3、数值相同,排名不相同,排名连续

二、基于mysql排序和排名

1、准备一张表

2、插入数据

3、设置临时变量,方便后续查询

4、数值相同,排名相同,排名连续

5、数值相同,排名相同,排名不连续

6、数值相同,排名不相同,排名连续


一、基于java排序和排名

1、数值相同,排名相同,排名连续

package com.saas.demo;

import lombok.Data;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class RankDemo {

    public static void main(String[] args) {
        //数据初始化
        List<People> peopleList = new ArrayList<>();
        peopleList.add(new People("张三",20));
        peopleList.add(new People("李四",30));
        peopleList.add(new People("王五",25));
        peopleList.add(new People("赵六",21));
        peopleList.add(new People("钱七",25));
        peopleList.add(new People("田八",30));
        peopleList.add(new People("周九",26));
        peopleList.add(new People("孙十",27));
        //按年龄从大到小排序
        peopleList = peopleList.stream().sorted(Comparator.comparing(People::getAge).reversed()).collect(Collectors.toList());

        int a =0;
        int b=Integer.MIN_VALUE;
        for(People people:peopleList){
            if(!people.getAge().equals(b)){
                b=people.getAge();
                a = a+1;
            }
            people.setRank(a);
        }
        //输出结果
        peopleList.stream().forEach(System.out::println);

    }
}

@Data
class People{
    //姓名
    private String name;
    //年龄
    private Integer age;
    //排名
    private Integer rank;

    public People(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}

2、数值相同,排名相同,排名不连续

package com.saas.demo;

import lombok.Data;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class RankDemo {

    public static void main(String[] args) {
        //数据初始化
        List<People> peopleList = new ArrayList<>();
        peopleList.add(new People("张三",20));
        peopleList.add(new People("李四",30));
        peopleList.add(new People("王五",25));
        peopleList.add(new People("赵六",21));
        peopleList.add(new People("钱七",25));
        peopleList.add(new People("田八",30));
        peopleList.add(new People("周九",26));
        peopleList.add(new People("孙十",30));
        //按年龄从大到小排序
        peopleList = peopleList.stream().sorted(Comparator.comparing(People::getAge).reversed()).collect(Collectors.toList());

        int a =0;
        int b=Integer.MIN_VALUE;
        int c=0;
        for(People people:peopleList){
            if(!people.getAge().equals(b)){
                b=people.getAge();
                a = a+1+c;
            }else {
                c++;
            }
            people.setRank(a);
        }
        //输出结果
        peopleList.stream().forEach(System.out::println);

    }
}

@Data
class People{
    //姓名
    private String name;
    //年龄
    private Integer age;
    //排名
    private Integer rank;

    public People(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}

3、数值相同,排名不相同,排名连续

package com.saas.demo;

import lombok.Data;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;

public class RankDemo {

    public static void main(String[] args) {
        //数据初始化
        List<People> peopleList = new ArrayList<>();
        peopleList.add(new People("张三",20));
        peopleList.add(new People("李四",30));
        peopleList.add(new People("王五",25));
        peopleList.add(new People("赵六",21));
        peopleList.add(new People("钱七",25));
        peopleList.add(new People("田八",30));
        peopleList.add(new People("周九",26));
        peopleList.add(new People("孙十",30));
        //按年龄从大到小排序
        peopleList = peopleList.stream().sorted(Comparator.comparing(People::getAge).reversed()).collect(Collectors.toList());

        AtomicInteger a = new AtomicInteger(1);
        peopleList.stream().forEach(s->s.setRank(a.getAndIncrement()));
        //输出结果
        peopleList.stream().forEach(System.out::println);

    }
}

@Data
class People{
    //姓名
    private String name;
    //年龄
    private Integer age;
    //排名
    private Integer rank;

    public People(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}

二、基于mysql排序和排名

1、准备一张表

CREATE TABLE `people` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL COMMENT '姓名',
  `age` int(11) NOT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;

2、插入数据

INSERT INTO people (`id`, `name`, `age`) VALUES (1, '张三', 20);
INSERT INTO people (`id`, `name`, `age`) VALUES (2, '李四', 30);
INSERT INTO people (`id`, `name`, `age`) VALUES (3, '王五', 25);
INSERT INTO people (`id`, `name`, `age`) VALUES (4, '赵六', 21);
INSERT INTO people (`id`, `name`, `age`) VALUES (5, '钱七', 25);
INSERT INTO people (`id`, `name`, `age`) VALUES (6, '田八', 30);
INSERT INTO people (`id`, `name`, `age`) VALUES (7, '周九', 26);
INSERT INTO people (`id`, `name`, `age`) VALUES (8, '孙十', 30);

3、设置临时变量,方便后续查询

set @rownum=0;

4、数值相同,排名相同,排名连续

 SELECT
			temp.name,
            temp.age,
            CASE
                WHEN @rowtotal = age THEN
                @rownum
                WHEN @rowtotal := age THEN
                @rownum :=@rownum + 1
                WHEN @rowtotal = 0 THEN
                @rownum :=@rownum + 1
        END AS rownum
        FROM
            (
                SELECT
                    name,age
                FROM
                people
                ORDER BY
                age DESC
                ) AS temp,
        (SELECT @rownum := 0 ,@rowtotal := NULL) r

5、数值相同,排名相同,排名不连续

SELECT
            temp.name,
            temp.age,
            @rownum := @rownum + 1 AS value,#临时变量
            @incrnum := CASE
        WHEN @rowtotal = temp.age THEN
            @incrnum
        WHEN @rowtotal := temp.age THEN
            @rownum
        END AS rownum
        FROM
            (
                SELECT
                     name,age
                FROM
                  people
                ORDER BY
                    age DESC
            ) AS temp,
            (
                SELECT
                    @rownum := 0 ,@rowtotal := NULL ,@incrnum := 0
            ) r

6、数值相同,排名不相同,排名连续

 SELECT
			temp.name,
            temp.age,
            @rownum :=@rownum + 1 AS rownum
        FROM
            (
                SELECT
                    name,age
                FROM
                people
                ORDER BY
                age DESC
                ) AS temp,
        (SELECT @rownum := 0 ,@rowtotal := NULL) r
				

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/7039.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

天猫食品饮料数据分析:2月份茶饮料品牌销量TOP10排行榜!

近年来&#xff0c;茶饮料品类逐渐丰富&#xff0c;也在潜移默化中激发消费者的购物欲望&#xff0c;茶饮料行业的整体市场规模也不断增长。 根据鲸参谋电商数据显示&#xff0c;2023年2月份在天猫平台上&#xff0c;茶饮料相关产品的月销量将近149万件&#xff0c;环比增长约…

ADAS-GPS定位原理概述

前言 “GPS传感器在无人机、室外物流车以及诸多机器人应用中经常出现&#xff0c;它们机器人的定位、导航中发挥着重要的作用&#xff0c;而今天的L2&#xff5e;L5级别自动驾驶系统更是离不开它们&#xff0c;今天我们走进它们的世界&#xff0c;探索其背后原理以及本质。” …

MySQL之事务和锁机制

文章目录一、事务1.1 事务特征1.2 隔离级别1.3 开启事务二、锁机制2.1 读锁、写锁2.2 全局锁、表锁、行锁2.3 记录锁、间隙锁、临键锁提示&#xff1a;以下是本篇文章正文内容&#xff0c;MySQL 系列学习将会持续更新 一、事务 在数据库里面&#xff0c;我们希望有些操作能够以…

leaflet实现波动的marker效果(131)

第131个 点击查看专栏目录 本示例的目的是介绍如何在vue+leaflet中显示波动的marker效果。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共76行)安装插件相关API参考:专栏目标示例效果 配置方式 1)查看基础设置…

chatgpt 变现思路

教学 为用户提供ChatGPT的培训课程&#xff0c;教授如何使用和掌握ChatGPT的基本功能和高级技巧。课程可以通过在线平台或实体培训形式进行。 各种设计 ChatGPT可以为设计师提供创意灵感&#xff0c;包括平面设计、UI/UX设计、建筑设计等。此外&#xff0c;它还可以协助设计…

MySQL主从复制之多主多从部署流程—2023.04

文章目录一、多主多从实现架构图二、准备工作三、MySQL多主多从搭建流程1、修改2个主节点配置文件2、修改2个从节点配置文件3、2个主节点相互复制4、2个从节点分别复制主节点5、测试记录&#xff1a;一、多主多从实现架构图 这里是2主2从&#xff0c;下图基本例举出来的实现的…

电脑安装Ubuntu系统(非虚拟机)步骤简述

由于我的笔记本电脑比较古老&#xff08;近10年&#xff09;&#xff0c;已经过了质保期&#xff0c;甚至续保时间都过了&#xff0c;所以本着能用则用的想法就在上面改安装Ubuntu系统。下面简单介绍下安装过程&#xff0c;自己留笔记&#xff0c;如果有碰到同样问题的能参考更…

信息收集之WAF绕过

信息收集之WAF绕过前言一、工具进行目录扫描1. 工具的下载2. 工具的使用二、Python代码进行目录扫描前言 对于web安全无WAF的信息收集&#xff0c;大家可以查看如下链接的文章&#xff1a; web安全之信息收集 对于有WAF信息收集&#xff0c;看如下所示&#xff1a;&#xff08;…

opencv学习(二)图像阈值和平滑处理

图像阈值ret, dst cv2.threshold(src, thresh, maxval, type)src&#xff1a; 输入图&#xff0c;只能输入单通道图像&#xff0c;通常来说为灰度图dst&#xff1a; 输出图thresh&#xff1a; 阈值maxval&#xff1a; 当像素值超过了阈值&#xff08;或者小于阈值&#xff0c;…

(数字图像处理MATLAB+Python)第四章图像正交变换-第一节:离散傅里叶变换

文章目录一&#xff1a;一维离散傅里叶变换&#xff08;1&#xff09;定义&#xff08;2&#xff09;实例二&#xff1a;一维快速傅里叶变换&#xff08;1&#xff09;定义&#xff08;2&#xff09;实例三&#xff1a;二维离散傅里叶变换&#xff08;1&#xff09;定义&#x…

Python入门教程+项目实战-7.4节: 程序实战-计算次大值

目录 7.2.1 计算四个中的次大值 7.2.2 使用循环计算次小值 7.2.3 系统学习python 7.2.1 计算四个中的次大值 假设有四个整型变量&#xff0c;该怎么计算四个中的次大值&#xff1f; 初学者解出这道题并不困难&#xff0c;但是将代码写得简洁优雅却是一个不小的挑战。 直接通…

aspnet016计算机组成原理精品课程shfw程序

2网站项目范围 计算机组成原理精品课程系统从两种用户角度进行功能划分。 1、学生部分&#xff1a; 1.1&#xff1a;新闻查看&#xff1b; 1.2&#xff1a;课程公告查看&#xff1b; 1.3&#xff1a;用户注册&#xff1b; 1.4&#xff1a;在线留言&#xff1b; 1.5&#xf…

Spring Boot 配置文件配置自动提示 Configuration Processor

效果 在使用Idea等开发工具时&#xff0c;配置文件中输入前缀就有对应的补全提示&#xff0c;使开发者可以很方便配置相应属性&#xff0c;效果截图如下&#xff1a; 元数据说明 这些提示来自于 spring 自动配置规范中的源数据文件 spring-configuration-metadata.json 和 ad…

百度储瑞松谈智能驾驶:极个别车厂才能做全栈自研

百度集团副总裁、智能汽车事业部总经理储瑞松在百人会论坛表示&#xff0c;汽车智能化系统不同于车企所熟悉的以金属件为主的车辆其他部分的系统&#xff0c;是一个以硬件为载体、由算法软件驱动的大规模动态系统&#xff0c;它的复杂性比起以金属件为主的系统是指数级增长的。…

【环境与工具】IDE配置——vscode配置

配置vscode的 Python , C 的编译环境 2. Python 2.1 Python解释器 2.1.1 安装python环境 2.1.2 创建vscode-python文件夹 裸配置 如图&#xff0c;与在命令行运行无区别 2.1.2 安装vscode-python插件 2.1.3 code插件运行.py 添加配置文件 program 设置启动文件 "progr…

多线程进阶学习12------ConcurrentHashMap详解

JDK 7 HashMap 并发死链 注意&#xff1a;要在 JDK 7 下运行&#xff0c;否则扩容机制和 hash 的计算方法都变了 import java.io.*; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.StringTokenizer; import java.util.concurrent.*; import java.…

AR”将会成为“更加日常化的移动设备应用的一部分”吗

目录 1&#xff1a;AR是什么 2&#xff1a;AR给人类带来的贡献 3&#xff1a;人们在生活中可以遇到许多 AR 技术应用 4&#xff1a;AR 技术的未来发展的趋势&#xff1a; 大学主攻VR&#xff0c;从大一就对VR的知识&#xff0c;设备&#xff0c;已经所涉及的知识伴随我的整…

AI工具(ChatGPT)常用指令,持续更新...

要国内使用AI工具&#xff0c;关注&#xff1a;码视野&#xff0c;回复&#xff1a;1002使用VensiGPT时&#xff0c;当你给的指令越精准&#xff0c;它回复就会越完美&#xff0c;例如&#xff0c;如果你要请它协助撰写文案&#xff0c;如果没有给与指定情景与目标&#xff0c;…

作为大学生,你还不会搭建chatGPT微应用吗?

目录 引言ChatGPT是什么&#xff1f;背景&#xff1a;ChatGPT敢为人先&#xff0c;打破全球僵局示例演示&#xff1a;基于ChatGPT微应用实现的条件及步骤&#xff08;1&#xff09;整体框架&#xff08;2&#xff09;搭建前的准备工作&#xff08;3&#xff09;实际搭建步骤&a…

文件或目录损坏怎么办?4个实用方法!

案例&#xff1a;文件或目录损坏怎么恢复&#xff1f; 【有谁知道为什么文件会突然无法打开且显示损坏了呀&#xff1f;我有一个很重要的文件无法打开了&#xff0c;之前从来没有遇到过这样的问题&#xff0c;这让我很无措&#xff0c;请大家帮我想想办法吧&#xff01;】 我…