MYSQL实现排名函数排名、分组排名

根据时间对每天的数据进行排序

排序部分sql:
    SELECT
        id,
     IF  ( @pre_creattime = DATE_FORMAT( a.creattime, '%Y-%m-%d' ), @xh := @xh + 1, @xh :=         1 ) xh,
    @pre_creattime := DATE_FORMAT( a.creattime, '%Y-%m-%d' ) /*这里时需要分组排序的列,我这里是根据创建时间排序的*/
    FROM  ywgl_scrb_zyfs AS a,( SELECT  @xh := 0, @pre_creattime := NULL   ) r 
    ORDER BY
        jstime ,
        zdmc ;

全部SQL:

SELECT
    t.id,
    DATE_FORMAT( t.scrq, '%Y-%m-%d' ) scrq,
    t1.zdmc,
    t.zdbm,
    t.zdlb,
    t.cph,
    t.sl,
    t.cll,
    t.jydw,
    t.xczp,
    t.ysdw,
    t.cydd,
    t.zbry,
    t.fylb,
    t.jsr,
    DATE_FORMAT( t.jstime, '%Y-%m-%d' ) jstime,
    t.ldh,
    t.bz,
    t.creattime,
    t.cydd,
    t.zbry,
    round( b.xh, 0 ) xh 
FROM
    ywgl_scrb_zyfs t
    LEFT JOIN ywgl_zdgl t1 ON t.zdmc = t1.id
    LEFT JOIN ywgl_scrb_szhy_hzs y ON t.id = y.zbid
    LEFT JOIN ywgl_scrb_zyfs_ss a ON a.id = t.id
    INNER JOIN (
    SELECT
        id,
    IF
        ( @pre_creattime = DATE_FORMAT( a.creattime, '%Y-%m-%d' ), @xh := @xh + 1, @xh := 1 ) xh,
        @pre_creattime := DATE_FORMAT( a.creattime, '%Y-%m-%d' ) 
    FROM
        ywgl_scrb_zyfs AS a,(
        SELECT
            @xh := 0,
            @pre_creattime := NULL 
        ) r 
    
    ORDER BY
        jstime ,
        zdmc 
    ) AS b ON t.id = b.id 
ORDER BY
    t.jstime desc,
    b.xh desc,
    zdmc DESC;

是根据文章对自己的sql进行修改,文章排序很全面可以参考:MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER_哲这这的博客-CSDN博客_mysql 排名文章目录1. 排名分类1.1 区别RANK,DENSE_RANK和ROW_NUMBER1.2 分组排名2. 准备数据3. 不分组排名3.1 连续排名3.2 并列跳跃排名3.3 并列连续排名4. 分组排名4.1 分组连续排名4.2 分组并列跳跃排名4.3 分组并列连续排名在MYSQL的最新版本MYSQL8已经支持了排名函数RANK,DENSE_RANK和ROW_NUMBER。但是在就得版本中还...https://blog.csdn.net/u011726005/article/details/94592866
  
    
    
     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值