好贷网好贷款

sql中实现数据的分类 20huayugu]

发布时间:2016-12-4 22:29:56 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"sql中实现数据的分类 20huayugu]",主要涉及到sql中实现数据的分类 20huayugu]方面的内容,对于sql中实现数据的分类 20huayugu]感兴趣的同学可以参考一下。

有500个学生按其成绩排序后分班,一共10个班,1-10名分配给1->10班其是一一对应.11-20名是10->1班.21-30名分配到1->10班. 31-40名分配到10->1班.依次类推如何用sql实现 前提500个学生的信息已在一个表中存在,考试信息也已有. 请朋友们给设计一下表,给个例子 先谢谢各位了

case when ...楼下写

IF OBJECT_ID('SCORE') IS NOT NULL DROP TABLE SCORE GO CREATE TABLE SCORE( STU_ID INT, SCORE1 NUMERIC(4,2), SCORE2 NUMERIC(4,2), SCORE3 NUMERIC(4,2) ) INSERT INTO SCORE SELECT 1, 90, 80, 80 UNION ALL SELECT 2, 91, 80, 80 UNION ALL SELECT 3, 92, 80, 80 UNION ALL SELECT 5, 95, 80, 80 UNION ALL SELECT 6, 81, 80, 80 UNION ALL SELECT 7, 70, 80, 80 UNION ALL SELECT 8, 80, 80, 80 UNION ALL SELECT 9, 91, 80, 80 UNION ALL SELECT 10, 75, 80, 80 UNION ALL SELECT 11, 66, 80, 80 UNION ALL SELECT 12, 54, 80, 80 UNION ALL SELECT 13, 90, 80, 80 UNION ALL SELECT 19, 89, 80, 80 UNION ALL SELECT 21, 80, 90, 80 DECLARE @I INT --设定分组人数 SET @I=5 ;WITH MU AS( SELECT STU_ID,SCORE1+SCORE2+SCORE3 'SCORE' ,(ROW_NUMBER() OVER (ORDER BY (SCORE1+SCORE2+SCORE3) DESC)-1)[email protected] 'RANK' FROM SCORE ) SELECT *  ,CASE WHEN (RANK+1)%2=1 THEN ROW_NUMBER() OVER (PARTITION BY RANK ORDER BY SCORE DESC)  ELSE @I+1-ROW_NUMBER() OVER (PARTITION BY RANK ORDER BY SCORE DESC) END  FROM MU T1 /* 5 255.00 0 1 3 252.00 0 2 2 251.00 0 3 9 251.00 0 4 1 250.00 0 5 13 250.00 1 5 21 250.00 1 4 19 249.00 1 3 6 241.00 1 2 8 240.00 1 1 10 235.00 2 1 7 230.00 2 2 11 226.00 2 3 12 214.00 2 4 */

  -- Test Data: ta If object_id('ta') is not null      Drop table ta Go Create table ta(id int identity(1,1),name nvarchar(5)) Go declare @i int  set @I = 100 while @I > 0  begin Insert into ta  select ' '  set @I = @I - 1 end  go   --Start declare @I int,@j bit set @J = 0 set @i = 0 update ta set name = case when (id-1)/10 % 2 =0 then id - (id-1)/10*10 else 11 - id + ((id-1)/10 )*10 end select * from ta   id          name   ----------- -----  1           1 2           2 3           3 4           4 5           5 6           6 7           7 8           8 9           9 10          10 11          10 12          9 13          8 14          7 15          6 16          5 17          4 18          3 19          2 20          1 21          1 22          2 23          3 24          4 25          5 26          6 27          7 28          8 29          9 30          10 31          10 32          9

看来时要理清名词和班级这2个数字之间的关系,就好搞了

我写的太复杂了

上一篇:关于时序数据库和报表数据库 10fredrickhu]
下一篇:谁有MSSQL的SQL优化器? 20zhongasen]

相关文章

相关评论