2017-02-04 2 views
0

У меня есть вопрос, который задает вопрос:Найти максимальное значение за каждый год

-Показать максимальный объем продаж за каждый год?

Я думаю, что у меня есть запрос стартера, но я не могу понять, как получить все годы в моем ответе:

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

Этот запрос дает мне год с продажами макс. Мне нужен максимальный объем продаж в течение КАЖДОГО года. Спасибо за вашу помощь!

ответ

0

Используйте group by и max, если вам всего лишь год и максимальный объем продаж года.

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; 
Смежные вопросы