for example:15:18:59 SQL> create table t1 (a int, b int);表已创建。已用时间:  00: 00: 00.15
15:18:59 SQL>
15:18:59 SQL> insert into t1 values (1,5);已创建 1 行。已用时间:  00: 00: 00.16
15:18:59 SQL> insert into t1 values (1,3);已创建 1 行。已用时间:  00: 00: 00.16
15:18:59 SQL> insert into t1 values (1,4);已创建 1 行。已用时间:  00: 00: 00.15
15:18:59 SQL> insert into t1 values (2,1);已创建 1 行。已用时间:  00: 00: 00.16
15:18:59 SQL> insert into t1 values (2,3);已创建 1 行。已用时间:  00: 00: 00.00
15:18:59 SQL>
15:18:59 SQL> SELECT
15:18:59   2  max(b) KEEP (DENSE_RANK LAST ORDER BY (a) desc) AS last,
15:18:59   3  max(b) KEEP (DENSE_RANK FIRST ORDER BY (a) desc) AS first
15:18:59   4  FROM t1;      LAST      FIRST
---------- ----------
         5          3已用时间:  00: 00: 00.00

解决方案 »

  1.   

    呵呵,我来解释一下,楼上的SQL含义:
    选出
    以字段a分组,最小一组中(LAST 降序)所有记录中b的最大值

    以字段a分组,最大一组中(FRIST 降序)所有记录中b的最大值看一下9i里的例子,FIRST 和LAST函数里
    SELECT department_id,
    MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct) "Worst",
    MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct) "Best"
    FROM employees
    GROUP BY department_id;
    DEPARTMENT_ID Worst Best
    ------------- ---------- ----------
    10 4400 4400
    20 6000 13000
    30 2500 11000
    40 6500 6500
    50 2100 8200
    60 4200 9000
    70 10000 10000
    80 6100 14000
    90 17000 24000
    100 6900 12000
    110 8300 12000
    7000 7000用department_id分组,每组用commission_pct排序(分组),对每个department_id分组选出commission_pct分组中最小一组中salary的最小值,对每个department_id分组选出commission_pct分组中最大一组中salary的最大值
      

  2.   

    呵呵,我来解释一下,楼上的SQL含义:
    选出
    以字段a分组,最小一组中(LAST 降序)所有记录中b的最大值

    以字段a分组,最大一组中(FRIST 降序)所有记录中b的最大值看一下9i里的例子,FIRST 和LAST函数里
    SELECT department_id,
    MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct) "Worst",
    MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct) "Best"
    FROM employees
    GROUP BY department_id;
    DEPARTMENT_ID Worst Best
    ------------- ---------- ----------
    10 4400 4400
    20 6000 13000
    30 2500 11000
    40 6500 6500
    50 2100 8200
    60 4200 9000
    70 10000 10000
    80 6100 14000
    90 17000 24000
    100 6900 12000
    110 8300 12000
    7000 7000用department_id分组,每组用commission_pct排序(分组),对每个department_id分组选出commission_pct分组中最小一组中salary的最小值,对每个department_id分组选出commission_pct分组中最大一组中salary的最大值