如何在子查询中使用别名?

Leg*_*end 3 sql oracle

我想要实现的是从以下形式的表中获取具有最大值的行:

A | B | Ratio 
0 | 1 | 1.0
1 | 2 | 1.0
2 | 3 | 1.0
3 | 4 | 0.33
4 | 5 | 0.25
Run Code Online (Sandbox Code Playgroud)

我试图只显示包含最大值的行(在本例中为1.0).可能是我没有这样做.我有一个表格的查询:

SELECT A,B,C 
FROM (---Long Sub Query--- Aliased as Full_Table)
WHERE RATIO=(SELECT MAX(RATIO) FROM Full_Table);
Run Code Online (Sandbox Code Playgroud)

但是,无法从第二个子查询引用Full_Table.有些行具有相同的最大值,这是我使用此查询的原因.有没有更好的结构来实现这一目标?在最坏的情况下,我必须用整个长查询替换第二个Full_Table,但我希望有更好的方法来做到这一点.

Mar*_*ers 5

您可以使用公用表表达式:

WITH Full_Table AS (---Long Sub Query---)
SELECT A,B,C 
FROM Full_Table
WHERE RATIO=(SELECT MAX(RATIO) FROM Full_Table);
Run Code Online (Sandbox Code Playgroud)