SQL View: нахождение максимального объема в день - PullRequest
1 голос
/ 28 марта 2019

У меня есть таблица со следующей схемой:

CREATE TABLE Sales (
"Date"  date,
ID      char(3),
Volume  integer not null check (Volume >= 0),
primary key ("Date", ID)
; 

Дата - это дата, когда продукт продан, ID - это идентификатор продукта, Объем - это количество продуктов, проданных в этот день.Это пример данных, введенных в базу данных:

Date       | ID   |  volume  
------------+------+---------
 2012-01-03 | AAA  |   100
 2012-01-03 | BBB  |    50
 2012-01-03 | CCC  |   356
 2012-01-04 | AAA  |    66
 2012-01-04 | CCC  |    99
 2012-01-15 | BBB  |   210

Я хотел бы получить представление, чтобы найти товар с наибольшим количеством продаваемых каждый день.

Ожидаемый результат следующий:

Date       | ID   |  volume  
------------+------+---------
 2012-01-03 | CCC  |   356
 2012-01-04 | CCC  |    99
 2012-01-15 | BBB  |   210

Я попробовал следующий код, но он выдает неправильный вывод:

create or replace view Sales("Date", ID, volume) as
select  a."Date", a.ID, max(a.volume)
from Sales a
group by a."Date", a.ID
;

Я чувствую, что что-то не так с частью группы a.ID, но я не уверен.Спасибо за любую помощь, спасибо!

1 Ответ

1 голос
/ 28 марта 2019

Первая группа для получения максимального объема по дате, а затем присоединение к таблице для получения строк, соответствующих каждому максимальному объему:

select s.*
from sales s inner join (
  select "Date", max(Volume) maxVolume
  from sales
  group by "Date"
) g on g."Date" = s."Date" and g.maxVolume = s.Volume
order by s."Date"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...