今天看到这个么一道题,炸一看,感觉 ~简单哦!然后再仔细一看,当时就有点懵逼了
![]() 要求:有一种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 |
|
沙发#
发布于:2018-05-09 17:22
哈哈,很不错的一个用法,谢谢楼主分享哦百度了一下,这是求一行多列中最大值的一种思想.
下面链接有3种方式, https://blog.csdn.net/lt045508/article/details/68921527 |
|
|
板凳#
发布于:2018-05-09 17:10
select XM, [max]= MAX(col),[min]=MIN(col)
from stu group by XM 这样应该也可以吧。不过,上面的这个写法确实是一种比较特殊的用法,有些用法可以借鉴 |
|
|