Mysql将查询后的数据进行排名的SQL语句

    xiaoxiao2022-07-05  159

    一、不管数据相同与否,排名依次排序(1,2,3,4,5,6,7.....)

    SELECT       a.USER_ID,       a.QUANTITY,       @rownum := @rownum + 1 AS RANK   FROM       (           SELECT               USER_ID,               COUNT(*) AS QUANTITY           FROM               TEST           GROUP BY               USER_ID           ORDER BY               QUANTITY       ) AS a,       (SELECT @rownum := 0) r  

    二、只要数据有相同的排名就一样,排名依次排序(1,2,2,3,3,4,5.....)

    SELECT       a.USER_ID,       a.QUANTITY,   CASE   WHEN @rowtotal = a.QUANTITY THEN       @rownum   WHEN @rowtotal := a.QUANTITY THEN       @rownum :=@rownum + 1   WHEN @rowtotal = 0 THEN       @rownum :=@rownum + 1   END AS RANK   FROM       (           SELECT               USER_ID,               COUNT(*) AS QUANTITY           FROM               TEST           GROUP BY               USER_ID           ORDER BY               QUANTITY       ) AS a,   (SELECT @rownum := 0 ,@rowtotal := NULL) r  

    三、只要数据有相同的排名就一样,但是相同排名也占位,排名依次排序(1,2,2,4,5,5,7.....)

    SELECT       new.USER_ID,       new.QUANTITY,       new.RANK   FROM       (           SELECT               a.USER_ID,               a.QUANTITY,               @rownum := @rownum + 1 AS num_tmp,               @incrnum := CASE           WHEN @rowtotal = a.QUANTITY THEN               @incrnum           WHEN @rowtotal := a.QUANTITY THEN               @rownum           END AS RANK           FROM               (                   SELECT                       USER_ID,                       COUNT(*) AS QUANTITY                   FROM                       TEST                   GROUP BY                       USER_ID                   ORDER BY                       QUANTITY               ) AS a,               (                   SELECT                       @rownum := 0 ,@rowtotal := NULL ,@incrnum := 0               ) r       ) AS new  

    最新回复(0)