表格的数据
ColName Value Ct ColCount
K1 3 3 2
K1 1 2 2
K3 2 3 2
K3 5 2 2
K5 4 4 2
K5 5 3 2
K2 2 3 3
K2 3 2 3
K2 1 2 3
K4 1 2 3
K4 3 2 3
K4 5 2 3
大致的思路是这样的:ColName 表示名称、Value表示位置、Ct表示次数,ColCount表示名称出现的行数;
先取ColName行数最小的,并且相同,没有相同就一个,ColCount表示行数,
这样K1 K3 K5的ColCount相同并且最小,所以针对K1 K3 K5排序,
K1 Value为3出现3次,Value为1出现2次,所以K1排到第3;
K3 Value为2出现3次,Value为5出现2次,所以K3排2;
K5 Value为4出现4次,Value为5出现3次,所以K5排第4;
然后再取下一个相同行数,实际就是ColCount相等,K2 K4ColName行数相同为3,所以后计算;
K2 Value为2出现3次,Value为3出现2次,Value为1出现2次;本应该取2,但是第二已经给K3排了,所以取后面的3,但是3也被K1排了,所以K2只能取1;
K4 Value为1出现2次,Value 为3出现2次,Value为5出现2次;所以K4 取 1、3都已经被取了,所以只能取5;所以K4排5;
查询排序的结果就如下
1 K2
2 K3
3 K1
4 K5
5 K4
CREATE
TABLE
Test1
(
ColName
VARCHAR
(20),
Value
INT
,
Ct
INT
,
ColCount
Int
)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K1'
,3,3,2)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K1'
,1,2,2)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K3'
,2,3,2)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K3'
,5,2,2)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K5'
,4,4,2)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K5'
,5,3,2)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K2'
,2,3,3)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K2'
,3,2,3)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K2'
,1,2,3)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K4'
,1,2,3)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K4'
,3,2,3)
INSERT
INTO
Test1(ColName,Value,Ct,ColCount)
VALUES
(
'K4'
,5,2,3)
看的不是太明白。