很难的问题,急啊

lbhqu 2009-02-07 09:23:39
每天输入前20名的学号(或姓名)和相应的名次,人是不同的,一段时间后,按得第一名的次数多少进行统计,即得第一名次数最多的排在第一,次多的排在第二,......,一直把第一名次数多的前20个人查出来,同时还要统计这20个人得第二,第三,......,第十各多少次,并一起显示出来。怎么实现??
...全文
229 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanlongwuhui 2009-02-12
  • 打赏
  • 举报
回复
条件中把MC=1去掉,排序条件中加MC,SELECT语句中加DISTINCT
lbhqu 2009-02-11
  • 打赏
  • 举报
回复
很感激以上给位的回帖,我还没说完啊 如果名次是并列的话就按下一级来排名 比如如果第一名次数是并列的就按第二名次数来排 如果第二名次数并列就继续排第三名次数,。。。,如此反复直到全部十名次数排完
liujiayu10 2009-02-10
  • 打赏
  • 举报
回复
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
feifeiyiwen 2009-02-10
  • 打赏
  • 举报
回复
楼上的逻辑清楚
ljhcy99 2009-02-10
  • 打赏
  • 举报
回复
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.学号
流年岁月 2009-02-10
  • 打赏
  • 举报
回复
[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]

mark
yanlongwuhui 2009-02-10
  • 打赏
  • 举报
回复
[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]
yanlongwuhui 2009-02-08
  • 打赏
  • 举报
回复
表: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
yanlongwuhui 2009-02-08
  • 打赏
  • 举报
回复
表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
eynStudio 2009-02-07
  • 打赏
  • 举报
回复
这是数据库的问题拉。。。
懂数据库方面的就好解决了
JeffrySun 2009-02-07
  • 打赏
  • 举报
回复
把数据库表设计出来就好办了啊

学生表, 学生名次关系表, 然后单纯用select语句就可以了啊

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧