1

2番目の列が次のように降順になっているテーブルがあります

a 30  
a 28
a 18
a 10
b 40
b 34
c  32
c  22

のような結果が欲しい

a 30  1
a 28  2
a 18  3
a 10  4
b 40  1
b 34  2
c  32  1
c  22  2

ありがとう..!

4

3 に答える 3

3

これを試して

SELECT t1.*, COUNT(*) AS rank
FROM Table1 t1
INNER JOIN 
Table1 t2 on t1.col1 = t2.col1
AND t1.col2 <= t2.col2
GROUP BY t1.col1, t1.col2
ORDER BY t1.col1, t1.col2 DESC
于 2013-04-26T10:09:09.223 に答える
0

変数でそれを行う方法は次のとおりです

SET @level:=1;
SET @group='';
SELECT
    column1,
    column2,
    Sort
FROM(
    SELECT 
        column1,
        column2,
        @level :=(IF(@group = column1,@level+1 ,1)) AS `Sort`, 
        @group := column1
    FROM t
ORDER BY column1 ASC, column2 DESC
) AS l;

SQL フィドルのデモ

出力

| COLUMN1 | COLUMN2 | SORT |
----------------------------
|       a |      30 |    1 |
|       a |      28 |    2 |
|       a |      18 |    3 |
|       a |      10 |    4 |
|       b |      40 |    1 |
|       b |      34 |    2 |
|       c |      32 |    1 |
|       c |      22 |    2 |
于 2013-04-26T09:53:27.370 に答える