select Top 20 A. 学号,A.第一名的次数,B.名次,B.名次次数,
from
(select COUNT(*) 第一名的次数 ,名次,学号
from table
where 名次=1
group by 学号,名次
) as A,
(select COUNT(*) 名次次数 ,名次,学号
from table)
group by 学号,名次
) AS B
WHERE A.学号=B.学号
[Quote=引用 4 楼 yanlongwuhui 的回复:]
表:A,字段:学号为XH(字符型),名次为MC(数值型)。查询语句参考如下:
SSELECT XH,MC,COUNT(*) FROM A WHERE XH IN (SELECT TOP 20 XH FROM A WHERE MC=1 GROUP BY XH ORDER BY COUNT(*) DESC) GROUP BY XH,MC ORDER BY XH,MC
[/Quote]
[Quote=引用 7 楼 feifeiyiwen 的回复:]
楼上的逻辑清楚
[/Quote]
缺少排序,结果明显不符合要求。
解释下我写的SQL语句:
把第一名次数多的前20个人查出来:SELECT TOP 20 XH FROM A WHERE MC=1 GROUP BY XH ORDER BY COUNT(*) DESC
分组统计每个人,各名次的次数:SELECT XH,MC,COUNT(*) FROM A GROUP BY XH,MC ORDER BY XH,MC
把上面的结果加上条件,限制在第一名次数多的前20个人中,那就是:
[Quote=引用 4 楼 yanlongwuhui 的回复:]
表:A,字段:学号为XH(字符型),名次为MC(数值型)。查询语句参考如下:
SELECT XH,MC,COUNT(*) FROM A WHERE XH IN (SELECT TOP 20 XH FROM A WHERE MC=1 GROUP BY XH ORDER BY COUNT(*) DESC) GROUP BY XH,MC ORDER BY XH,MC
[/Quote]
表:A,字段:学号为XH(字符型),名次为MC(数值型)。查询语句参考如下:
SSELECT XH,MC,COUNT(*) FROM A WHERE XH IN (SELECT TOP 20 XH FROM A WHERE MC=1 GROUP BY XH ORDER BY COUNT(*) DESC) GROUP BY XH,MC ORDER BY XH,MC
表A,自动为XH(字符型),MC(数值型)。查询语句参考如下:
SSELECT XH,MC,COUNT(*) FROM A WHERE XH IN (SELECT TOP 20 XH FROM A WHERE MC=1 GROUP BY XH ORDER BY COUNT(*) DESC) GROUP BY XH,MC ORDER BY XH,MC