Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-如何选择具有最大值(+group by)列的行_Sql_Oracle - Fatal编程技术网

SQL-如何选择具有最大值(+group by)列的行

SQL-如何选择具有最大值(+group by)列的行,sql,oracle,Sql,Oracle,我是在这里提到的问题上建立起来的: 我需要查询具有maxvaluei.e的行。60那么,我们到了 坐两排。从那以后,我需要时间戳最低的那一行 2010年5月18日下午3点->60 我们如何根据Sujee提供的答案: 仅供参考-我正在使用Oracle,并试图避免嵌套联接,因此使用rownum技巧 目标是获得相同的答案,但对于按类别分组的情况,只需通过以下方式向顺序添加一个额外的键: 如果要在结果集中选择类别,请在子查询中选择它。听起来好像要为每个类别选择高值最高的行。如果是,您可以使用row_n

我是在这里提到的问题上建立起来的:

我需要查询具有maxvaluei.e的行。60那么,我们到了 坐两排。从那以后,我需要时间戳最低的那一行 2010年5月18日下午3点->60

我们如何根据Sujee提供的答案:

仅供参考-我正在使用Oracle,并试图避免嵌套联接,因此使用rownum技巧


目标是获得相同的答案,但对于按类别分组的情况,只需通过以下方式向顺序添加一个额外的键:


如果要在结果集中选择类别,请在子查询中选择它。

听起来好像要为每个类别选择高值最高的行。如果是,您可以使用row_number根据其高值对类别中的每一行进行排名,并且只选择排名最高的行,即rn=1:


这不会只返回一行吗?我正在读,但我想我需要两行,因为类别请解释类别与问题有什么关系。你在寻找什么样的结果集?
date                 value

18/5/2010, 1 pm        40
18/5/2010, 2 pm        20
18/5/2010, 3 pm        60
18/5/2010, 4 pm        30
18/5/2010, 5 pm        60
18/5/2010, 6 pm        25 
select high_val, my_key
from (select high_val, my_key
      from mytable
      where something = 'avalue'
      order by high_val desc)
where rownum <= 1
date                 value    category

18/5/2010, 1 pm        40      1
18/5/2010, 2 pm        20      1
18/5/2010, 3 pm        60      1
18/5/2010, 4 pm        30      2
18/5/2010, 5 pm        60      2
18/5/2010, 6 pm        25      2 
select high_val, my_key
from (select high_val, my_key
      from mytable
      where something = 'avalue'
      order by high_val desc, date asc
     )
where rownum = 1;
select * from (
    select row_number() over (partition by category order by high_val desc, date asc) rn, *
    from mytable
    where something = 'avalue'
) t1 where rn = 1