如何根据分数获取特定行数

时间:2014-05-27 05:02:18

标签: mysql

必须显示具体数量。意味着我必须显示最大分数值4倍然后小于该分数3倍等等

我有这样的表: -

ID              Score

 1               1
 2               1
 3               1
 4               1
 5               2
 6               2
 7               2
 8               3
 9               3
10               4
11               4
12               4

我希望输出如下: -

   Score
    1
    1
    1
    2
    2
    3
    4

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT Score
FROM
(SELECT a.Score, a.ID, count(*) as RN FROM TableName a
JOIN TableName b ON a.Score = b.Score AND a.ID >= b.ID
GROUP BY a.Score, a.ID) T
WHERE RN>1

结果:

SCORE
1
1
1
2
2
3
4
4

SQL Fiddle中的示例。

<强>解释

在内部查询中,我们选择按ID划分的行号,并按分数排序。然后我们从行号大于1的内部查询中选择Score(为了省略1条记录)。

答案 1 :(得分:0)

SELECT x。*   来自my_table x   加入my_table y     ON y.marks = x.marks    和y.id&lt; = x.id   组      BY x.marks       ,x.id  有COUNT(0)&lt; = MAX(4-x.marks)   订购      BY标记DESC,id;