如何使用查询在oracle中获取以下输出?

时间:2016-07-09 13:39:27

标签: oracle

我关注的数据如

ano         asal
------------------
1            100
1            150
1            190
2            200
2            240
3            300
3            350
4             400
4             400
4             400

我希望从最小的sal到1,从2,3和4 o / p喜欢

ano       asal
---------------
1          190
2          240
3          390
4          400
4          400
4          400

3 个答案:

答案 0 :(得分:1)

您希望为每个asal组返回ano的最大值,但是如果它们存在,您希望保留原始表中的重复项。这意味着你不能只做一个简单的GROUP BY。但您可以使用GROUP BY查询来识别最大值,然后通过INNER JOIN保留这些记录。试试这个问题:

SELECT t1.ano, t1.asal
FROM yourTable t1
INNER JOIN
(
    SELECT ano, MAX(asal) AS asal
    FROM yourTable
    GROUP BY ano
) t2
    ON t1.ano = t2.ano AND t1.asal = t2.asal

答案 1 :(得分:0)

您可以通过

使用firt select with group with union
select ano, max(asal) 
from my_table 
where ano != 4 
group by ano
union all 
select ano, asal
from my_table 
where ano = 4 
order by ano

答案 2 :(得分:0)

SELECT
    ano, asal
FROM (
    SELECT
        data.*,
        MAX(asal) OVER (PARTITION BY ano) max
    FROM
        data)
WHERE
    asal = max