• [Oracle SQL]Greatest and Least


    在网上看到有人问如下问题,

    已知表TB的数据如下 

    SQL> select * from tb;

            ID    CHINESE       MATH    ENGLISH
    ---------- ---------- ---------- ----------
          1001         89         98         87
          
    1002         81         87         79

    现在要得到如下的结果,该怎么来解决,


            ID    CHINESE       MATH    ENGLISH        
    MAX        MIN
    ---------- ---------- ---------- ---------- ---------- ----------
          1001         89         98         87         98         87
          
    1002         81         87         79         87         79

    想了半天也没想到啥好办法,首先自然而然想到用MAX和MIN函数,但是显然这两个是聚集函数,是要作用在同一个column的一个Group上面的,而现在要得到的MAX和MIN的值却是作用于每一行上面的,如果要借助于MAX()和 MIN()的话,还需要对原表的数据结构进行下处理(先进行转列操作unpivot),但是显然不是很好。 

    看到有个网友回帖用greatest 和 least函数来做,真是简洁漂亮,也为自己的孤陋寡闻而狂汗呀-_-!!!

    解决方式如下,


    SQL
    > SELECT id, chinese, math, english,
      
    2         greatest(chinese, math, english) max,
      
    3         least(chinese, math, english) min
      
    4  FROM   tb;

            ID    CHINESE       MATH    ENGLISH        
    MAX        MIN
    ---------- ---------- ---------- ---------- ---------- ----------
          1001         89         98         87         98         87
          
    1002         81         87         79         87         79
  • 相关阅读:
    【原】 OPenCV学习笔记1:imread()
    windows8下:OpenCV2.2.0 +VS2005/2008/2010
    数组指针和指针数组的区别
    虚函数和纯虚函数 覆盖和隐藏
    C/C++文件之eof()
    【转】 CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
    HTML 5是如何流行起来的
    Java程序员要注意的10个问题————————好东西就是要拿来分享
    祈福雅安
    对软件工程的思考
  • 原文地址:https://www.cnblogs.com/fangwenyu/p/1654542.html
Copyright © 2020-2023  润新知