SQL视图:查找基于每天的最大卷
我有一个具有以下架构的表:SQL视图:查找基于每天的最大卷,sql,database,postgresql,view,schema,Sql,Database,Postgresql,View,Schema,我有一个具有以下架构的表: CREATE TABLE Sales ( "Date" date, ID char(3), Volume integer not null check (Volume >= 0), primary key ("Date", ID) ; 日期是产品销售的日期,ID是产品的ID,体积是当天销售的产品数量。这是输入数据库的示例数据: Date | ID | volume ------------+------+---------
CREATE TABLE Sales (
"Date" date,
ID char(3),
Volume integer not null check (Volume >= 0),
primary key ("Date", ID)
;
日期是产品销售的日期,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组有些问题,但我不确定。
非常感谢您的帮助,谢谢 第一个按日期获取最大卷的组,然后加入表以获取对应于每个最大卷的行:
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"
非常感谢@forpas,我是sql新手,当有两个主键时,用order by编写查询可能会让人困惑