SQL语句练习实例之二——找出销售冠军

 更新时间:2011年10月07日 00:27:05   作者:  
在公司中,老板走进来,要一张每个地区销量前3名的销售额与销售员的报表
复制代码 代码如下:

--销售冠军
--问题:在公司中,老板走进来,要一张每个地区销量前3名的销售额与销售员的报表
---
create table salesdetail
(
Area int not null,
Saler nvarchar(20) not null,
SalerId int not null,
Sales money not null
)
insert salesdetail
select 1,'张三',15,3000
union select 1,'赵一',16,3500
union select 1,'钱二',17,4000
union select 1,'孙三',18,5000
union select 1,'李四',19,5000
union select 1,'王五',11,7000
union select 2,'周边一',25,3000
union select 2,'李白',22,4000
union select 2,'张镇东',23,6000
union select 2,'李宁',24,1000
union select 3,'李斯',35,3000
union select 3,'李勇',33,2000
union select 4,'李逵',44,5000
union select 4,'宋江',45,5000
union select 4,'吴用',42,13000
union select 4,'公孙胜',43,23000
union select 5,'阮小二',51,5000
union select 5,'阮小五',52,5000
union select 5,'林冲',53,5000
union select 5,'林莽',54,6000
go
---以下这种写法SQL语句会主动把最小的那一个销售额的所有行,都自动删除,只能得到比最小销售额大的数据
--如果你的最小销售额有3行,最大的只有一行,如地区5所示,只会得到最大的那一行。
--地区4只能得到二行,原因同上。
select * from salesdetail as a
where sales >= (select min(b.sales)
from salesdetail as b where a.Area=b.Area and a.Sales<=b.Sales
--group by sales
having COUNT(distinct b.Saler)<=3)
order by a.Area,a.Sales desc,a.Saler,a.SalerId
go
---使用rank()为每个分区中的每一行分配一个顺序号,如果有重复值,它们都将分配相同的顺序号。
select a.area,a.saler,seq from
(
select area,saler,RANK() over(PARTITION by area order by sales desc) as seq from salesdetail
)a where seq<=3
drop table salesdetail

相关文章

  • SQL Server内存机制详解

    SQL Server内存机制详解

    本文详细讲解了SQL Server的内存机制,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • SQL中WITH AS的使用实现

    SQL中WITH AS的使用实现

    WITH AS短语,也叫做子查询部分,可以定义一个SQL片断,该SQL片断会被整个SQL语句用到,本文主要介绍了SQL中WITH AS的使用实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • SQL Server数据库生成与执行SQL脚本详细教程

    SQL Server数据库生成与执行SQL脚本详细教程

    为了方便可以把需要连续执行的SQL语句写到一个文本文件中,并且用.SQL作为扩展名,这种文件叫做SQL脚本文件,下面这篇文章主要给大家介绍了关于SQL Server数据库生成与执行SQL脚本的相关资料,需要的朋友可以参考下
    2023-01-01
  • SqlServer 表连接教程(问题解析)

    SqlServer 表连接教程(问题解析)

    这篇文章主要介绍了SqlServer 表连接问题及解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • SQL Server分隔函数实例详解

    SQL Server分隔函数实例详解

    这篇文章主要介绍了SQL Server分隔函数的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • SqlServer创建自动收缩事务日志任务的图文教程

    SqlServer创建自动收缩事务日志任务的图文教程

    SQL Server数据库存在一个问题,如果你限制了它的日志文件的大小,那么当数据库日志达到这个大小的时候,数据库就会停止写入日志,下面这篇文章主要给大家介绍了关于SqlServer创建自动收缩事务日志任务的相关资料,需要的朋友可以参考下
    2022-09-09
  • sql server编写通用脚本实现获取一年前日期的方法

    sql server编写通用脚本实现获取一年前日期的方法

    这篇文章主要介绍了sql server编写通用脚本实现获取一年前日期,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • SQL Server 实现数字辅助表实例代码

    SQL Server 实现数字辅助表实例代码

    这篇文章主要介绍了SQL Server 实现数字辅助表的相关资料,并附实例代码,需要的朋友可以参考下
    2016-10-10
  • SQL Function 自定义函数详解

    SQL Function 自定义函数详解

    这篇文章主要介绍了SQL Function 自定义函数详解,需要的朋友可以参考下
    2016-10-10
  • SqlServer 2000、2005分页存储过程整理

    SqlServer 2000、2005分页存储过程整理

    这篇文章主要介绍了SqlServer 2000、2005分页存储过程整理,本文给出了4个实现版本,还给出二分分页过程,需要的朋友可以参考下
    2015-02-02

最新评论