我有“销售”表,其中包含 stor_id
、ord_date
和 quantity
。
问题是找到具有该 ord_date
quantity
的 stor_id
我使用了下面的查询
select sales.ord_date, sales.stor_id, sum(sales.qty)
from sales
group by sales.ord_date, sales.stor_id
order by sales.ord_date desc
例如,在我得到的结果中,在 2016-12-04
和 stor_id = 1
,商店已售出 35 本书,并且 stor_id = 2
商店当天售出了 20 本书。
我想取同一日期每组的最大值(在本例中为 stor_id = 1
,因为它售出了 35 件)。
最佳答案
您可以使用下面的查询来查询您正在使用上面的sql server 2008
select * from
(
select
ord_date,
case
when s.tot_sales = max(s.tot_sales) over (partition by s.ord_date)
then s.stor_id
else NULL
end as store_id,
max(s.tot_sales) over (partition by s.ord_date) as maximum_sales
from
(select distinct ord_date, stor_id,
sum(qty) over (partition by ord_date, stor_id) as tot_sales
from sales
)s
)s
where s.store_id is not NULL
工作 SQL fiddle : http://sqlfiddle.com/#!3/179e1/8
对于其他版本的 SQL Server
select sales.* from
(
select ord_date, stor_id,
sum(qty) as tot_sales
from sales
group by ord_date, stor_id
)sales
inner join
(
select
ord_date,
max(s.tot_sales) as maximum_sales
from
(
select ord_date, stor_id,
sum(qty) as tot_sales
from sales
group by ord_date, stor_id
)s
group by ord_date
)s
on sales.ord_date=s.ord_date and sales.tot_sales=s.maximum_sales
工作sql fiddle : http://sqlfiddle.com/#!3/179e1/9
关于SQL Server 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34249690/