sky丶斌
骑士
骑士
  • 最后登录2022-06-28
  • 发帖数29
阅读:8945回复:2

[sqlserver]横向数据(按行)的最大值和最小值的SQL语句的编写

楼主#
更多 发布于:2018-05-09 14:57
今天看到这个么一道题,炸一看,感觉 ~简单哦!然后再仔细一看,当时就有点懵逼了

要求:有一种student表,字段有姓名(XM)、语文成绩(YW)、数学成绩(SX)、英语成绩(YU),然后用sql查询每一个学生所有科目中的最高分和最低分。如图:

图片:TIM截图20180509144642.png


惊喜吧,意外吧!不按常理出牌,以前学校教我们的都是:查询所有学生某一个科目下成绩的平均值、最低值或最高值,而这次是横着来!!!
在不看下面答案前先试着搞一下吧,可能对于大牛来说这都是家常菜了!














select stu.XM,
[max]=(select MAX(col) from (select col=stu.YU union all select stu.SX union all select stu.YW)a),
[min]=(select MIN(col) from (select col=stu.YU union all select stu.SX union all select stu.YW)b)
from stu
doubleyong
管理员
管理员
  • 最后登录2025-03-16
  • 发帖数1196
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
沙发#
发布于:2018-05-09 17:22
哈哈,很不错的一个用法,谢谢楼主分享哦百度了一下,这是求一行多列中最大值的一种思想.
下面链接有3种方式,
https://blog.csdn.net/lt045508/article/details/68921527
知识需要管理,知识需要分享
doubleyong
管理员
管理员
  • 最后登录2025-03-16
  • 发帖数1196
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
板凳#
发布于:2018-05-09 17:10
select XM, [max]= MAX(col),[min]=MIN(col)
from stu
group by XM

这样应该也可以吧。不过,上面的这个写法确实是一种比较特殊的用法,有些用法可以借鉴
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号