博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
感觉挺有意思的SQL题目
阅读量:7097 次
发布时间:2019-06-28

本文共 1101 字,大约阅读时间需要 3 分钟。

1、有如下数据,要求查询每个班最低分和最高分,并将最高分与最低分显示为同一列

ID Student CourseName Score

1 张三 English 80
2 张三 Math 70
3 张三 Chinese 50
4 李四 English 90
5 李四 Chinese 70
6 王五 Math 60
7 王五 English 70
8 赵六 Chinese 80
9 赵六 Math 60
10 赵六 English 90

这是我的解决方案,如有更好的,欢迎指点:

select Student,CourseName,Score

from(
  select Student,CourseName,Score,
  rnDesc=ROW_NUMBER() over(partition by CourseName order by Score desc),--按照分数降序给个编号(如果是按照学生的话将over()中的CourseName改为

--Student 即可)

  rnAsc=ROW_NUMBER() over(partition by CourseName order by Score Asc)--按照分数升序给个编号
  from dbo.Score

)T where T.rnAsc=1 or t.rnDesc=1--取按升序的第一个和按降序的第一个即为最低分和最高分

 

2、如题:

 ID    Numb  type

1	0001	in  2	0001	in  3	0001	out 5	0001	in  6	0002	in  7	0002	out 8	0002	in  9	0002	in  10	0003	out 11	0003	out 12	0004	in

 要求查出的结果格式为:

numb    in     out   0001     3     10002     3     10003     0     20004     1     0

 sql:

select numb,

sum(case type when 'in' then 1 else 0 end)as tIn,--统计type为"in"的数量,用sum而非count

sum(case type when 'out' then 1 else 0 end)as tOut,--统计type为"out"的数量,用sum而非count

from table1

group by numb

转载于:https://www.cnblogs.com/xiexingen/p/3333379.html

你可能感兴趣的文章
ASP.NET状态管理详解,让你明明白白
查看>>
使用mysql触发器脚本,解决流水数据的添加。
查看>>
SIP and RTP Stack
查看>>
Activity间用Intent、Bundle、onActivityResult进行传值
查看>>
SQL Server如何启用xp_cmdshell组件
查看>>
Windows phone 8 学习笔记(3) 通信(转)
查看>>
学习jQuery之旅
查看>>
Lucene教程具体解释
查看>>
[Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
查看>>
Android Monkey自己主动化測试
查看>>
红黑树
查看>>
[原]如何在Android用FFmpeg+SDL2.0解码显示图像
查看>>
剑英陪你玩转图形学 (三)归去来
查看>>
在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
查看>>
AC自动机 - 多模式串的匹配运用 --- HDU 3065
查看>>
B-树学习笔记
查看>>
RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)
查看>>
angular-resource版本差异问题
查看>>
黑客发布iOS 4.1永久越狱程序
查看>>
T-Mobile证实数据泄露 但客户暂无风险
查看>>