必须显示具体数量。意味着我必须显示最大分数值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
答案 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;