SQL语句练习实例之四 找出促销活动中销售额最高的职员
技术百科
php中文网
发布时间:2016-06-07
浏览: 次 你刚在一家服装销售公司中找到了一份工作,此时经理要求你根据数据库中的两张表得到促销活动销售额最高的销售员
代码如下:---找出促销活动中销售额最高的职员
---你刚在一家服装销售公司中找到了一份工作,此时经理要求你根据数据库中的两张表得到促销活动销售额最高的销售员
---1.一张是促销活动表
---2.一张是销售客列表
create table Promotions
(
activity nvarchar(30),
sdate datetime,
edate datetime
)
insert Promotions
select '五一促销活动','2011-5-1','2011-5-7'
union
select '十一促销活动','2011-10-1','2011-10-7'
union
select 'OA专场活动','2011-6-1','2011-6-7'
go
create table sales
(
id int not null,
name nvarchar(20),
saledate datetime,
price money
)
go
insert sales
select 1,'王五','2011-5-1',1000 union
select 1,'王五','2011-5-2',2000 union
select 1,'王五','2011-5-3',3000 union
select 1,'王五','2011-5-4',4000 union
select 1,'张三','2011-5-1',1000 union
select 1,'张三','2011-5-3',2000 union
select 1,'张三','2011-5-4',4000 union
select 1,'李四','2011-5-6',1000 union
select 1,'赵六','2011-5-5',1000 union
select 1,'钱七','2011-5-8',1000 union
select 1,'孙五','2011-6-1',1000 union
select 1,'孙五','2011-6-2',2000 union
select 1,'王五','2011-6-3',3000 union
select 1,'孙五','2011-6-4',4000 union
select 1,'张三','2011-6-1',11000 union
select 1,'张三','2011-6-3',20000 union
select 1,'张三','2011-6-4',4000 union
select 1,'李四','2011-6-6',1000 union
select 1,'赵六','2011-6-5',1000 union
select 1,'钱七','2011-6-8',1500 union
select 1,'孙五','2011-10-1',11000 union
select 1,'孙五','2011-10-2',12000 union
select 1,'王五','2011-10-3',9000 union
select 1,'孙五','2011-10-4',4000 union
select 1,'张三','2011-10-1',11000 union
select 1,'张三','2011-10-3',2000 union
select 1,'张三','2011-10-4',4000 union
select 1,'李四','2011-10-6',27000 union
select 1,'赵六','2011-10-5',9000 union
select 1,'钱七','2011-10-8',3000
go
-----我们需要找出在每次的促销活动中,其销售总额大于 等于
---所有其他职员销售额的职员及促销事件。
---说明:谓词a2.namea.name将其他职员从子查询合计中排除出去
---------谓词Between 中的子查询确保我们使用了正确的促销日期
--方法一:
select a.name,b.activity,SUM(a.price) as totalprice
from sales a ,Promotions as b
where a.saledate between b.sdate and b.edate
group by a.name,b.activity
having SUM(price)>= all(select SUM(price) from sales a2
where a2.namea.name and a2.saledate between
(
select sdate from Promotions as b2 where b2.activity=b.activity
)
and (select edate from Promotions b3
where b3.activity=b.activity)
group by a2.name)
-----------------
---方法二:
---说明: 如果促销活动时间是不重叠的,则promotions表中只有一个主键列,这样在group by
--子句中使用(activity,sdate,edate)将不会改变。但是它将使having子句可以使用sdate和edate
select a.name,b.activity,SUM(a.price) as totalprice
from sales a ,Promotions as b
where a.saledate between b.sdate and b.edate
group by b.activity,b.sdate,b.edate,a.name
having SUM(price)>= all(select SUM(price) from sales a2
where a2.namea.name and a2.saledate between
b.sdate
and b.edate
group by a2.name)
go
--方法三:
---使用cte(sql 2005以后的版本)
with clearksTotal(name,activity,totalprice) as
(
select a.name,b.activity,SUM(price)
from sales a ,Promotions b
where a.saledate between b.sdate and b.edate
group by a.name,b.activity
)
select c1.name,c1.activity,c1.totalprice
from clearksTotal c1
where totalprice=(select MAX(c2.totalprice) from clearksTotal c2
where c1.activity=c2.activity)
go
drop table Promotions
go
drop table sales
# 数据库中
# 只有一个
# 两张
# 促销活动
# 活动中
# 子句
# 李四
# 在一家
# 中找
# 王五
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Drupal 中 HTML 链接被重复转义导致渲染
- 如何使用正则表达式提取以编号开头、后跟多个注解的完
- Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱
- 当网站SEO排名下降时,如何应对?
- Win11怎么关闭系统声音_Win11系统提示音静
- Win11怎么关闭专注助手 Win11关闭免打扰模
- c++如何实现一个高性能的环形队列(Ring Bu
- 如何使用Golang table-driven基准
- c++中如何使用std::variant_c++1
- Win11怎么设置默认输入法 Win11固定中文输
- Win10系统怎么查看端口状态_Windows10
- Python抽象类与接口设计_规范说明【指导】
- Win11怎么设置ipv4地址_Windows 1
- MySQL 中使用 IF 和 CASE 实现查询字
- Win10怎么限制单程序CPU占用上限_Win10
- 如何减少Golang内存碎片化_Golang内存分
- Windows10怎么卸载预装软件_Windows
- Win11文件扩展名怎么显示 Win11查看文件后
- Windows执行文件被SmartScreen拦截
- LINUX如何删除用户和用户组_Linux use
- Win10如何优化内存使用_Win10内存优化技巧
- 如何使用Golang安装依赖库_管理模块和第三方包
- Mac自带的词典App怎么用_Mac添加和使用多语
- Windows电脑键盘突然失灵怎么办?(驱动与硬件
- VSC里PHP变量未定义报错怎么解决_错误抑制技巧
- Win10系统怎么查看网络连接状态_Windows
- Win11怎么开启游戏工具栏_Windows11
- C++如何编写函数模板?(泛型编程入门)
- Mac如何创建和管理多个桌面空间_Mac高效多任务
- 如何在 ACF 中正确更新嵌套多层的 Group
- MAC怎么截图并快速编辑_MAC自带截图快捷键与标
- Python 中将 ISO 8601 时间戳转换为
- Win11怎么设置任务栏对齐方式_Windows1
- Win11怎么关闭透明效果_Windows11辅助
- 如何使用Golang处理网络超时错误_Golang
- PHP怎么接收前端传的时间戳_处理时间戳参数转换技
- Windows服务持续崩溃怎样修复_系统服务保护机
- MAC怎么用连续互通相机里的“桌上视角”_MAC在
- Python网页解析流程_html结构说明【指导】
- 如何使用Golang理解结构体指针方法接收者_Go
- Ajax提交表单PHP怎么接收_处理Ajax发送的
- GML (Geography Markup Lan
- php怎么操作Redis_Redis扩展连接与基本
- MAC怎么解压RAR格式文件_MAC第三方解压工具
- 如何使用Golang管理模块版本_Golanggo
- Mac如何修改Hosts文件?(本地开发与屏蔽网站
- Win11怎么查看显卡温度 Win11任务管理器查
- 如何在Golang中使用time处理时间_Gola
- Go 语言标准库为何不提供泛型 Contains
- 手机php怎么转mp4_手机端php文件转mp4a

QQ客服