sqlserver查询语句3

射手座cl 2018-12-10 05:26:33
引用sqlserver查询语句2:https://bbs.csdn.net/topics/392491070?page=1

如果把 2005年和2006年 6个数据排序的第三个值 改成 2005年最大两个数据2006年最大两个数据 共4个数据 排序的第 3三个值能写不
查询结果应为:
学号 天数
1 1(等于的没算)
2 3
3 2
...全文
155 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2018-12-11
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([学号] int,[日期] Date,[年] NVARCHAR(20),[月] int,[日] int,[成绩] int)
Insert #T
select 1,'2005-1-1','2005',1,1,90 union all
select 1,'2005-1-2','2005',1,2,88 union all
select 1,'2005-1-3','2005',1,3,89 union all
select 1,'2006-1-1','2006',1,1,99 union all
select 1,'2006-1-2','2006',1,2,89 union all
select 1,'2006-1-3','2006',1,3,89 union all
select 1,'2007-1-1','2007',1,1,100 union all
select 1,'2007-1-2','2007',1,2,70 union all
select 1,'2007-1-3','2007',1,3,89 union all
select 2,'2005-1-1','2005',1,1,93 union all
select 2,'2005-1-2','2005',1,2,88 union all
select 2,'2005-1-3','2005',1,3,85 union all
select 2,'2006-1-1','2006',1,1,99 union all
select 2,'2006-1-2','2006',1,2,89 union all
select 2,'2006-1-3','2006',1,3,89 union all
select 2,'2007-1-1','2007',1,1,100 union all
select 2,'2007-1-2','2007',1,2,98 union all
select 2,'2007-1-3','2007',1,3,99 union all
select 3,'2005-1-1','2005',1,1,93 union all
select 3,'2005-1-2','2005',1,2,86 union all
select 3,'2005-1-3','2005',1,3,89 union all
select 3,'2006-1-1','2006',1,1,99 union all
select 3,'2006-1-2','2006',1,2,89 union all
select 3,'2006-1-3','2006',1,3,89 union all
select 3,'2007-1-1','2007',1,1,97 union all
select 3,'2007-1-2','2007',1,2,95 union all
select 3,'2007-1-3','2007',1,3,66
Go
--测试数据结束
SELECT #T.学号,COUNT(1) AS 天数 FROM #T join (
SELECT *,ROW_NUMBER()OVER(PARTITION BY 学号 ORDER BY 成绩 DESC) rn1 FROM (Select *,ROW_NUMBER()OVER(PARTITION BY 学号,年 ORDER BY 成绩 DESC) rn from #T WHERE 年 IN ('2005','2006'))tt WHERE rn<=2
)t
ON t.学号 = #T.学号 AND t.rn1=3 WHERE #T.年='2007' AND #T.成绩>t.成绩
GROUP BY #T.学号


射手座cl 2018-12-10
  • 打赏
  • 举报
回复
引用 5 楼 二月十六 的回复:
这些是 2005年最大两个数据2006年最大两个数据 你看对不?


是这些,最后还是求2007年每个同学成绩大于其对应指标的天数
二月十六 版主 2018-12-10
  • 打赏
  • 举报
回复
这些是 2005年最大两个数据2006年最大两个数据 你看对不?
射手座cl 2018-12-10
  • 打赏
  • 举报
回复
引用 1 楼 二月十六 的回复:
结果是空吧,这样第三个是99?


3 2005-1-1 2005 1 1 93
3 2005-1-2 2005 1 2 86
3 2005-1-3 2005 1 3 89
3 2006-1-1 2006 1 1 99
3 2006-1-2 2006 1 2 89
3 2006-1-3 2006 1 3 89
3 2007-1-1 2007 1 1 97
3 2007-1-2 2007 1 2 95
3 2007-1-3 2007 1 3 66
比如说 学号3同学的,原来是05,06年六个数据排序,算的指标。现在去05,06年4个指标,算指标。
05年取成绩
3 2005-1-1 2005 1 1 93
3 2005-1-3 2005 1 3 89
06年取成绩
3 2006-1-1 2006 1 1 99
3 2006-1-2 2006 1 2 89
将这四个成绩排序的第三个值。还是要求每个同学的
射手座cl 2018-12-10
  • 打赏
  • 举报
回复
引用 2 楼 二月十六 的回复:
2005年最大两个数据2006年最大两个数据

是每个学号的,还是不区分学号?


每个学号的
二月十六 版主 2018-12-10
  • 打赏
  • 举报
回复
2005年最大两个数据2006年最大两个数据 是每个学号的,还是不区分学号?
二月十六 版主 2018-12-10
  • 打赏
  • 举报
回复
结果是空吧,这样第三个是99?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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