首页 文章

如何在postgresql中找到同一行的最小值

提问于
浏览
1

如何从PostgreSQL中的行级(不在列中)获取最小值,最大值 .

postgresql> SELECT * FROM employee;
    +------+------+------------+--------------------+
    | id   | name | q1  |  q2 | q3  | q4 |
    +------+------+------------+--------------------+
    |    1 | John | 20  | 30  | 10  |  4  |
    |    2 | Ram  | 07  | 10  | 03  | 04  |
    |    3 | John | 05  | 03  | 15  | 40  | 
    |    4 | Sree | 12  | 05  | 20  | 25  |

我需要单选择查询来获取最小值和最大值 . 怎么解决这个问题 . 条件是(其中id = 4)但我需要的结果是最小值为05,最大值为25来自员工表 .

2 回答

  • 5

    我建议使用 LEASTGREATEST 函数 . 这是reference .

    您想要的查询只需选择id,并将每列插入这两个函数,如下所示:

    SELECT id, name,
      LEAST(q1, q2, q3, q4) AS minValue,
      GREATEST(q1, q2, q3, q4) AS maxValue
    FROM employee
    WHERE id = 4;
    

    这是SQL Fiddle .

    EDIT

    我也尝试使用PostgreSQL小提琴,以及both worked .

  • 0

    对两列a,b使用公式,如:

    对于MAX - ((a b)abs(a-b))/ 2
    对于MIN - ((a b) - abs(a-b))/ 2

    所以SQL就像:

    SELECT ((q1+q2) + ABS(q1-q2))/2 AS MAX, ((q1+q2) + ABS(q1-q2))/2 AS MIN
    FROM MyTable
    

    在您的情况下将其概括为4个值 .

相关问题