SQL - 如何选择一个具有最大值列的行

13 浏览
0 Comments

SQL - 如何选择一个具有最大值列的行

这个问题已经在这里有答案:

如何在排序后通过 Oracle 查询来限制返回的行数?

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 

我需要查询具有最大值(即60)的行。因此,我们得到两行。从中,我需要在那一天(即2010年5月18日,下午3点)具有最低时间戳的行(即60)。

admin 更改状态以发布 2023年5月23日
0
0 Comments

分析!这避免了两次访问表格:

SELECT DISTINCT
       FIRST_VALUE(date_col)  OVER (ORDER BY value_col DESC, date_col ASC),
       FIRST_VALUE(value_col) OVER (ORDER BY value_col DESC, date_col ASC)
FROM   mytable;

0
0 Comments

类似于TOP、LIMIT、ROWNUM等关键字是与数据库相关的。请阅读本文获取更多信息。

http://en.wikipedia.org/wiki/Select_(SQL)#Result_limits

Oracle:ROWNUM 可以使用。

select * from (select * from table 
order by value desc, date_column) 
where rownum = 1;

更具体地回答问题:

select high_val, my_key
from (select high_val, my_key
      from mytable
      where something = 'avalue'
      order by high_val desc)
where rownum <= 1

0