您现在的位置: 爱51代码网 >> 范文 >> 文章正文
sql不能对包含聚合或子查询的表达式执行聚合函数
select companyid,year,market,max(sum(totalprice)) from t_order 
 where companyid is not null group by companyid,year,market
但是我想取得每个地区每年最大的销售额的公司
把它作为子查询
select companyid,market,year,max(sum) as max from
( select companyid,year,market,sum(totalprice) as sum from t_order
 where companyid is not null group by companyid,year,market ) a 
 group by companyid, year,market
查询到的结果也一样
怎么才能取得每个地区每年最大的销售额的公司?
if object_id('[t_order]') is not null drop table [t_order]
go
create table [t_order]([year] int,[market] varchar(4),[totalprice] int,[companyid] int)
insert [t_order]
select 1,'本地',6,6 union all
select 1,'本地',11,1 union all
select 1,'本地',16,2 union all
select 1,'本地',22,1 union all
select 1,'本地',26,4 union all
select 1,'本地',36,5 union all
select 2,'本地',5,2 union all
select 2,'本地',10,3 union all
select 2,'本地',15,1 union all
select 2,'本地',19,2 union all
select 2,'本地',20,3 union all
select 2,'本地',29,4 union all
select 2,'区域',9,1 union all
select 2,'区域',10,3 union all
select 2,'区域',15,4 union all
select 2,'区域',13,6 union all
select 2,'区域',14,5 union all
select 2,'区域',20,2
--------------开始查询--------------------------
;
WITH    cte
          AS ( SELECT   companyid ,
                        year ,
                        market ,
                        SUM(totalprice) [sum]
               FROM     t_order
               WHERE    companyid IS NOT NULL
               GROUP BY companyid ,
                        year ,
                        market
             )
    SELECT  a.companyid ,
            a.[year] ,
            a.market ,
            b.[max]
    FROM    cte a
            INNER JOIN ( SELECT [year] ,
                                market ,
                                MAX([sum]) [max]
                         FROM   cte
                         GROUP BY [year] ,
                                market
                       ) b ON a.[year] = b.[year]
                              AND a.market = b.market AND a.sum=b.max
 
----------------结果----------------------------
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    sqlserver存储过程把A表的数
    sqlserver无法连接到XX处的服
    SQL SERVER中性能总结及需要
    varchar 值 '1,3,5'
    附加数据库对于服务器pc失败
    sql如何获取当前日期 向后推
    SQL 怎样在原表将一条数据根
    SQL日期转换成英文并赋值给某
    sqlserver存储过程执行后变量
    sql server 2008到安装程序支
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |