2017-02-04 12 views
0

私は質問している質問があります:各年の最大値を見つける

- 毎年の最大販売台数はありますか?

私はスタータークエリを持っていると思うが、私は私の答えのすべての年を取得する方法を見つけ出すことはできません。

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

このクエリは、私の最大の売上高年間を提供します。毎年最大の売上が必要です。ご協力いただきありがとうございます!

答えて

0

あなたが必要とするのは、年間売上高と年間売上高であれば、group bymaxを使用してください。あなたが売上につながりを持つ行を取得したい場合はrankを使用し、

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; 

:あなたは今年の最大の売上高を持つすべての列と行が必要な場合は

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

、あなたは窓関数ROW_NUMBERを使用することができます:

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; 
関連する問題