SQL Server 分组

标签 sql sql-server database t-sql

我有“销售”表,其中包含 stor_idord_datequantity。 问题是找到具有该 ord_date

最大 quantitystor_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-04stor_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/

相关文章:

iphone - 如何在 iPhone 中格式化 SQLite 日期?

sql - 选择检索值的子串

database - 使用遗留数据库测试 Django 应用程序 - 如何避免每次测试重新创建数据库?

sql-server - 在没有网络连接的情况下在 SQL 数据库之间传输表的最简单方法是什么?

sql - 从事 Google Bigquery 工作。不确定如何参数化以下查询或使其更干净

mysql - 如何在单个查询的不同列中获取奇数 ID?

SQL - 在两个连续记录中减去日期,然后求平均值

用于聚合列值的 SQL 脚本

sql-server - 如何记录到 SQL Server 2000 中的表?

java - 如何在 Hibernate 中进行 SELECT 查询包括子查询 COUNT(*)