1 --1、查找员工的编号、姓名、部门和出生日期,如果出生日期为空值,显示日期不详,并按部门排序输出,日期格式为yyyy-mm-dd。
  2 select emp_no,emp_name,dept,isnull(convert(char(10),birthday,120),'日期不详') birthday
  3 from employee
  4 order by dept
  5
  6 --2、查找与喻自强在同一个单位的员工姓名、性别、部门和职称
  7 select emp_no,emp_name,dept,title
  8 from employee
  9 where emp_name<>'喻自强' and dept in
 10 (select dept from employee
 11 where emp_name='喻自强')
 12
 13 --3、按部门进行汇总,统计每个部门的总工资
 14 select dept,sum(salary)
 15 from employee
 16 group by dept
 17
 18 --4、查找商品名称为14寸显示器商品的销售情况,显示该商品的编号、销售数量、单价和金额
 19 select a.prod_id,qty,unit_price,unit_price*qty totprice
 20 from sale_item a,product b
 21 where a.prod_id=b.prod_id and prod_name='14寸显示器'
 22
 23 --5、在销售明细表中按产品编号进行汇总,统计每种产品的销售数量和金额
 24 select prod_id,sum(qty) totqty,sum(qty*unit_price) totprice
 25 from sale_item
 26 group by prod_id
 27
 28 --6、使用convert函数按客户编号统计每个客户1996年的订单总金额
 29 select cust_id,sum(tot_amt) totprice
 30 from sales
 31 where convert(char(4),order_date,120)='1996'
 32 group by cust_id
 33
 34 --7、查找有销售记录的客户编号、名称和订单总额
 35 select a.cust_id,cust_name,sum(tot_amt) totprice
 36 from customer a,sales b
 37 where a.cust_id=b.cust_id
 38 group by a.cust_id,cust_name
 39
 40 --8、查找在1997年中有销售记录的客户编号、名称和订单总额
 41 select a.cust_id,cust_name,sum(tot_amt) totprice
 42 from customer a,sales b
 43 where a.cust_id=b.cust_id and convert(char(4),order_date,120)='1997'
 44 group by a.cust_id,cust_name
 45
 46 --9、查找一次销售最大的销售记录
 47 select order_no,cust_id,sale_id,tot_amt
 48 from sales
 49 where tot_amt=
 50 (select max(tot_amt)
 51 from sales)
 52
 53 --10、查找至少有3次销售的业务员名单和销售日期
 54 select emp_name,order_date
 55 from employee a,sales b
 56 where emp_no=sale_id and a.emp_no in
 57 (select sale_id
 58 from sales
 59 group by sale_id
 60 having count(*)>=3)
 61 order by emp_name
 62
 63 --11、用存在量词查找没有订货记录的客户名称
 64 select cust_name
 65 from customer a
 66 where not exists
 67 (select *
 68 from sales b
 69 where a.cust_id=b.cust_id)
 70
 71 --12、使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额订货日期不要显示时间,日期格式为yyyy-mm-dd按客户编号排序,同一客户再按订单降序排序输出
 72 select a.cust_id,cust_name,convert(char(10),order_date,120),tot_amt
 73 from customer a left outer join sales b on a.cust_id=b.cust_id
 74 order by a.cust_id,tot_amt desc
 75
 76 --13、查找16M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用男、女表示
 77 select emp_name 姓名, 性别= case a.sex when 'm' then '男'
 78 when 'f' then '女'
 79 else '未'
 80 end,
 81 销售日期= isnull(convert(char(10),c.order_date,120),'日期不详'),
 82 qty 数量, qty*unit_price as 金额
 83 from employee a, sales b, sale_item c,product d
 84 where d.prod_name='16M DRAM' and d.prod_id=c.prod_id and
 85 a.emp_no=b.sale_id and b.order_no=c.order_no
 86
 87 --14、查找每个人的销售记录,要求显示销售员的编号、姓名、性别、产品名称、数量、单价、金额和销售日期
 88 select emp_no 编号,emp_name 姓名, 性别= case a.sex when 'm' then '男'
 89 when 'f' then '女'
 90 else '未'
 91 end,
 92 prod_name 产品名称,销售日期= isnull(convert(char(10),c.order_date,120),'日期不详'),
 93 qty 数量, qty*unit_price as 金额
 94 from employee a left outer join sales b on a.emp_no=b.sale_id , sale_item c,product d
 95 where d.prod_id=c.prod_id and b.order_no=c.order_no
 96
 97 --15、查找销售金额最大的客户名称和总货款
 98 select cust_name,d.cust_sum
 99 from customer a,
100 (select cust_id,cust_sum
101 from (select cust_id, sum(tot_amt) as cust_sum
102 from sales
103 group by cust_id ) b
104 where b.cust_sum =
105 ( select max(cust_sum)
106 from (select cust_id, sum(tot_amt) as cust_sum
107 from sales
108 group by cust_id ) c )
109 ) d
110 where a.cust_id=d.cust_id
111
112 --16、查找销售总额少于1000元的销售员编号、姓名和销售额
113 select emp_no,emp_name,d.sale_sum
114 from employee a,
115 (select sale_id,sale_sum
116 from (select sale_id, sum(tot_amt) as sale_sum
117 from sales
118 group by sale_id ) b
119 where b.sale_sum <1000
120 ) d
121 where a.emp_no=d.sale_id
122
123 --17、查找至少销售了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额
124 select a.cust_id,cust_name,b.prod_id,prod_name,d.qty,d.qty*d.unit_price
125 from customer a, product b, sales c, sale_item d
126 where a.cust_id=c.cust_id and d.prod_id=b.prod_id and
127 c.order_no=d.order_no and a.cust_id in (
128 select cust_id
129 from (select cust_id,count(distinct prod_id) prodid
130 from (select cust_id,prod_id
131 from sales e,sale_item f
132 where e.order_no=f.order_no) g
133 group by cust_id
134 having count(distinct prod_id)>=3) h )
135
136 --18、查找至少与世界技术开发公司销售相同的客户编号、名称和商品编号、商品名称、数量和金额
137 select a.cust_id,cust_name,d.prod_id,prod_name,qty,qty*unit_price
138 from customer a, product b, sales c, sale_item d
139 where a.cust_id=c.cust_id and d.prod_id=b.prod_id and
140 c.order_no=d.order_no and not exists
141 (select f.*
142 from customer x ,sales e, sale_item f
143 where cust_name='世界技术开发公司' and x.cust_id=e.cust_id and
144 e.order_no=f.order_no and not exists
145 ( select g.*
146 from sale_item g, sales h
147 where g.prod_id = f.prod_id and g.order_no=h.order_no and
148 h.cust_id=a.cust_id)
149 )
150
151 19、查找表中所有姓刘的职工的工号,部门,薪水
152 select emp_no,emp_name,dept,salary
153 from employee
154 where emp_name like '刘%'
155
156 20、查找所有定单金额高于2000的所有客户编号
157 select cust_id
158 from sales
159 where tot_amt>2000
160
161 21、统计表中员工的薪水在4000-6000之间的人数
162 select count(*)as 人数
163 from employee
164 where salary between 4000 and 6000
165
166 22、查询表中的同一部门的职工的平均工资,但只查询"住址"是"上海市"的员工
167 select avg(salary) avg_sal,dept
168 from employee
169 where addr like '上海市%'
170 group by dept
171
172 23、将表中住址为"上海市"的员工住址改为"北京市"
173 update employee
174 set addr like '北京市'
175 where addr like '上海市'
176
177 24、查找业务部或会计部的女员工的基本信息。
178 select emp_no,emp_name,dept
179 from employee
180 where sex='F'and dept in ('业务','会计')
181
182 25、显示每种产品的销售金额总和,并依销售金额由大到小输出。
183 select prod_id ,sum(qty*unit_price)
184 from sale_item
185 group by prod_id
186 order by sum(qty*unit_price) desc
187
188 26、选取编号界于'C0001'和'C0004'的客户编号、客户名称、客户地址。
189 select CUST_ID,cust_name,addr
190 from customer
191 where cust_id between 'C0001' AND 'C0004'
192
193 27、计算出一共销售了几种产品。
194 select count(distinct prod_id) as '共销售产品数'
195 from sale_item
196
197 28、将业务部员工的薪水上调3%。
198 update employee
199 set salary=salary*1.03
200 where dept='业务'
201
202 29、由employee表中查找出薪水最低的员工信息。
203 select *
204 from employee
205 where salary=
206 (select min(salary )
207 from employee )
208
209 30、使用join查询客户姓名为"客户丙"所购货物的"客户名称","定单金额","定货日期","电话号码"
210 select a.cust_id,b.tot_amt,b.order_date,a.tel_no
211 from customer a join sales b
212 on a.cust_id=b.cust_id and cust_name like '客户丙'
213
214 31、由sales表中查找出订单金额大于"E0013业务员在1996/10/15这天所接每一张订单的金额"的所有订单。
215 select *
216 from sales
217 where tot_amt>all
218 (select tot_amt
219 from sales
220 where sale_id='E0013'and order_date='1996/10/15')
221 order by tot_amt
222
223 32、计算'P0001'产品的平均销售单价
224 select avg(unit_price)
225 from sale_item
226 where prod_id='P0001'
227
228 33、找出公司女员工所接的定单
229 select sale_id,tot_amt
230 from sales
231 where sale_id in
232 (select sale_id from employee
233 where sex='F')
234
235 34、找出同一天进入公司服务的员工
236 select a.emp_no,a.emp_name,a.date_hired
237 from employee a
238 join employee b
239 on (a.emp_no!=b.emp_no and a.date_hired=b.date_hired)
240 order by a.date_hired
241
242 35、找出目前业绩超过232000元的员工编号和姓名。
243 select emp_no,emp_name
244 from employee
245 where emp_no in
246 (select sale_id
247 from sales
248 group by sale_id
249 having sum(tot_amt)<232000)
250
251 36、查询出employee表中所有女职工的平均工资和住址在"上海市"的所有女职工的平均工资
252 select avg(salary)
253 from employee
254 where sex like 'f'
255 union
256 select avg(salary)
257 from employee
258 where sex like 'f' and addr like '上海市%'
259
260 37、在employee表中查询薪水超过员工平均薪水的员工信息。
261 Select *
262 from employee
263 where salary>( select avg(salary)
264 from employee)
265
266 38、 找出目前销售业绩超过10000元的业务员编号及销售业绩,并按销售业绩从大到小排序。
267 Select sale_id ,sum(tot_amt)
268 from sales
269 group by sale_id
270 having sum(tot_amt)>10000
271 order by sum(tot_amt) desc
272
273 39、 找出公司男业务员所接且订单金额超过2000元的订单号及订单金额。
274 Select order_no,tot_amt
275 From sales ,employee
276 Where sale_id=emp_no and sex='M' and tot_amt>2000
277
278 40、 查询sales表中订单金额最高的订单号及订单金额。
279 Select order_no,tot_amt from sales
280 where tot_amt=(select max(tot_amt) from sales)
281
282 41、 查询在每张订单中订购金额超过4000元的客户名及其地址。
283 Select cust_name,addr from customer a,sales b
284 where a.cust_id=b.cust_id and tot_amt>4000
285
286 42、 求出每位客户的总订购金额,显示出客户号及总订购金额,并按总订购金额降序排列。
287 Select cust_id,sum(tot_amt) from sales
288 Group by cust_id
289 Order by sum(tot_amt) desc
290
291 43、 求每位客户订购的每种产品的总数量及平均单价,并按客户号,产品号从小到大排列。
292 Select cust_id,prod_id,sum(qty),sum(qty*unit_price)/sum(qty)
293 From sales a, sale_item b
294 Where a.order_no=b.order_no
295 Group by cust_id,prod_id
296 Order by cust_id,prod_id
297
298 44、 查询订购了三种以上产品的订单号。
299 Select order_no
300 from sale_item
301 Group by order_no
302 Having count(*)>3
303
304 45、 查询订购的产品至少包含了订单3号中所订购产品的订单。
305 Select distinct order_no
306 From sale_item a
307 Where order_no<>'3'and not exists (
308 Select * from sale_item b where order_no ='3' and not exists
309 (select * from sale_item c where c.order_no=a.order_no and c.prod_id=b.prod_id))
310
311 46、 在sales表中查找出订单金额大于"E0013业务员在1996/11/10这天所接每一张订单的金额"的所有订单,并显示承接这些订单的业务员和该订单的金额。
312 Select sale_id,tot_amt from sales
313 where tot_amt>all(select tot_amt
314 from sales
315 where sale_id='E0013' and order_date='1996-11-10')
316
317 47、 查询末承接业务的员工的信息。
318 Select *
319 From employee a
320 Where not exists
321 (select * from sales b where a.emp_no=b.sale_id)
322
323 48、 查询来自上海市的客户的姓名,电话、订单号及订单金额。
324 Select cust_name,tel_no,order_no,tot_amt
325 From customer a ,sales b
326 Where a.cust_id=b.cust_id and addr='上海市'
327
328 49、 查询每位业务员各个月的业绩,并按业务员编号、月份降序排序。
329 Select sale_id,month(order_date), sum(tot_amt)
330 from sales
331 group by sale_id,month(order_date)
332 order by sale_id,month(order_date) desc
333
334 50、 求每种产品的总销售数量及总销售金额,要求显示出产品编号、产品名称,总数量及总金额,并按产品号从小到大排列。
335 Select a.prod_id,prod_name,sum(qty),sum(qty*unit_price)
336 From sale_item a,product b
337 Where a.prod_id=b.prod_id
338 Group by a.prod_id,prod_name
339 Order by a.prod_id
340 51、 查询总订购金额超过'C0002'客户的总订购金额的客户号,客户名及其住址。
341 Select cust_id, cust_name,addr
342 From customer
343 Where cust_id in (select cust_id from sales
344 Group by cust_id
345 Having sum(tot_amt)>
346 (Select sum(tot_amt) from sales where cust_id='C0002'))
347
348 52、 查询业绩最好的的业务员号、业务员名及其总销售金额。
349 select emp_no,emp_name,sum(tot_amt)
350 from employee a,sales b
351 where a.emp_no=b.sale_id
352 group by emp_no,emp_name
353 having sum(tot_amt)=
354 (select max(totamt)
355 from (select sale_id,sum(tot_amt) totamt
356 from sales
357 group by sale_id) c)
358
359 53、 查询每位客户所订购的每种产品的详细清单,要求显示出客户号,客户名,产品号,产品名,数量及单价。
360 select a.cust_id, cust_name,c.prod_id,prod_name,qty, unit_price
361 from customer a,sales b, sale_item c ,product d
362 where a.cust_id=b.cust_id and b.order_no=c.order_no and c.prod_id=d.prod_id
363
364 54、 求各部门的平均薪水,要求按平均薪水从小到大排序。
365 select dept,avg(salary)
366 from employee
367 group by dept
368 order by avg(salary)

转载于:https://www.cnblogs.com/elleniou/archive/2012/10/24/2736726.html

学习数据库必须掌握的54条SQL查询语句相关推荐

  1. 听说你写sql很溜,一条sql查询语句是如何执行的?

    我们项目中必不可少要与数据库接触,那么一条sql查询语句是如何执行的呢? 本文以MySQL数据库为例.MySQL是典型的C/S架构(client客户端/server服务端),客户端进程向服务端进程发送 ...

  2. 怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...

    一.第一节:一条sql查询语句是怎样执行的 5.5.5版本以后,默认使用存储引擎为InnoDB 不使用查询缓存,MySQL8.0没有查询缓存这个功能 总体来说:MySQL分为service层和存储引擎 ...

  3. mysql怎么查看刷脏页慢_一条SQL查询语句极为缓慢,如何去优化呢

    一条 SQL 查询语句执行的很慢,那是每次查询都很慢呢?还是大多数情况下是正常的,偶尔出现很慢呢?可以分以下两种情况来讨论. 大多数情况是正常的,只是偶尔会出现很慢的情况. 在数据量不变的情况下,这条 ...

  4. 【mysql技术内幕1】mysql基础架构-一条SQL查询语句是如何执行的

    文章目录 1 一条SQL查询语句是如何执行的 2 mysql体系结构 3 InnoDB存储引擎 4 总结 1 一条SQL查询语句是如何执行的 ​ 通常我们使用数据库,都是将数据库看成一个整体,我们的应 ...

  5. 一条SQL查询语句的执行过程,一张图说清SQL查询语句执行过程

    一张图说明 一条SQL查询语句的执行过程 一条sql语句从发送到数据库到它执行完成并返回结果,主要经历以下几个过程: 连接器->查询缓存(如果开启了查询缓存,则会经过这一步,但是大多数情况下都是 ...

  6. mysql查询前几笔sql语句_mysql开发常用的几条sql查询语句

    mysql开发常用的几条sql查询语句 有需要的朋友可参考一上. 1.计算年龄 如果你有一个人的生日而需要计算这个人的年龄,将下列语句中@dateofbirth替换为生日即可 代码如下 SELECT ...

  7. 当我们输入一条SQL查询语句时,发生了什么?

    我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于 MySQL 的学习也是这样.平时我们使用数据库,看到的通常都是一个整体.比如,你有个最简单 ...

  8. MySQL番外篇:一条SQL查询语句是如何执行的?

    在面试的过程中,有的面试官会给出一条简单的SQL查询语句,让简单说一下执行的过程. SELECT * FROM emp where age=30; 以下问MySQL的基本架构图,从中可以看出SQL语句 ...

  9. 一条SQL查询语句是如何执行的? MySql杂谈

    在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不 ...

  10. 讲mysql执行流程书籍_MySQL 基础架构 1. 一条SQL查询语句的执行过程(个人学习笔记)...

    MySQL的逻辑架构图: MySQL 大体分为 "server 层" 和 "存储引擎层" 两部分: Server 层 包括 连接器.查询缓存.分析器.优化器.执 ...

最新文章

  1. BASE64 编码和解码
  2. 从照片中可视化图像数据
  3. linux查看crontab日志无权限,记一次LINUX-CRONTAB失败的排查案例
  4. 精通python设计模式-浅谈Python设计模式 - 原型模式
  5. ACM-线段树扫描线总结
  6. Facebook 工程师是如何高效工作的?
  7. 用虚拟机把ubuntu安装到TF卡上
  8. 数据库中有痣但是有时取不到_农村这种长得像“泥鳅”的鱼,以前没人吃,现在可能有钱都吃不到...
  9. IIS7配置PHP 报错 对找不到的文件启用文件监视
  10. 深入浅出计算机组成原理03:处理器
  11. 【数据结构笔记46】Sort with Swap(0,*)只允许交换0的排序
  12. matlab画图基本命令
  13. Ubuntu查看硬盘序列号
  14. springboot实现oos上传下载
  15. 【整理贴】企业网站系统大全,拿好不谢
  16. 十个Chatbot框架介绍
  17. python3 pdf 转 txt
  18. 2021年春季ACM训练赛第5场
  19. Python爬虫编程思想(52):使用Beautiful Soup选择子节点
  20. jsp+tomcat+mysql配置全过程nbsp;和mys…

热门文章

  1. 百度人脸识别文档冲突,facetype应是face_type
  2. 电脑不会当局者迷——评人机围棋大战
  3. 创业失败反思:市场跟销售完全是两回事
  4. Python3使用PIL
  5. oracle复制数据库文件,Oracle备份与恢复系列(四)复制数据库 使用原有的控制文件...
  6. mysql触发器信号给qt_利用回调函数实现DLL与Qt主程序的数据交互,进一步实现对Qt主程序中的信号触发 - zcabcd123的专栏 - 博客频道 - CSDN.NET...
  7. python collections模块_python collections模块
  8. 【融云分析】 IM 即时通讯之链路保活
  9. 7个Python实战项目代码,让你感受下大神是如何起飞的!
  10. MVC中code first方式开发,数据库的生成与更新