查找每年的最大值

时间:2017-02-04 18:39:24

标签: sql oracle

我有一个问题:

- 列出每年的最大销售额?

我认为我有起始查询,但我无法弄清楚如何在我的答案中获得所有这些年:

SELECT TO_CHAR(stockdate,'YYYY') AS year, sales
FROM sample_newbooks
WHERE sales = (SELECT MAX(sales) FROM sample_newbooks);

此查询为我提供了最大销售额的年份。我需要每年最大销量。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

如果您需要的是年度年度和最高销售额,请使用group bymax

select 
    to_char(stockdate, 'yyyy') year,
    max(sales) sales
from sample_newbooks
group by to_char(stockdate, 'yyyy')

如果您需要包含年度最大销售额的所有列的行,您可以使用窗口函数row_number:

select
    *
from (
    select
        t.*,
        row_number() over (partition by to_char(stockdate, 'yyyy') order by sales desc) rn
    from sample_newbooks t
) t where rn = 1;

如果您想获得与销售有关系的行,请使用rank

select
    *
from (
    select
        t.*,
        rank() over (partition by to_char(stockdate, 'yyyy') order by sales desc) rn
    from sample_newbooks t
) t where rn = 1;