1. 找出供应商名称,所在城市

SELECT 公司名称 AS 供应商名称, 城市 AS 所在城市
FROM 供应商


2. 找出华北地区能够供应海鲜的所有供应商列表

SELECT 公司名称 AS 供应商列表
FROM 产品
LEFT JOIN 供应商 ON 供应商.`供应商ID` = 产品.`供应商ID`
LEFT JOIN 类别 ON 类别.`类别ID` = 产品.`类别ID`
WHERE 类别.类别ID = 8
AND 地区 = '华北'


3. 找出订单销售额前五的订单是经由哪家运货商运送的

SELECT 运货商.`公司名称`, ROUND((订单明细.单价 * 订单明细.数量 * (1 - 折扣)), 2) AS 销售额
FROM 订单明细
LEFT JOIN 订单 ON 订单明细.`订单ID` = 订单.`订单ID`
LEFT JOIN 运货商 ON 订单.`运货商` = 运货商.`运货商ID`
ORDER BY 销售额 DESC
LIMIT 5


4. 找出按箱包装的产品名称

SELECT 产品名称
FROM 产品
WHERE 单位数量 LIKE '%箱%'


5. 找出重庆的供应商能够供应的所有产品列表

SELECT 产品名称
FROM 产品
LEFT JOIN 供应商 ON 产品.`供应商ID` = 供应商.`供应商ID`
WHERE 供应商.`城市` = '重庆'


6. 找出雇员郑建杰所有的订单并根据订单销售额排序

SELECT 订单明细.`订单ID`, ROUND((订单明细.单价 * 数量 * (1 - 折扣)), 2) AS 销售额
FROM 订单
LEFT JOIN 订单明细 ON 订单.`订单ID` = 订单明细.`订单ID`
LEFT JOIN 雇员 ON 订单.`雇员ID` = 雇员.`雇员ID`
WHERE 雇员.`姓氏` = '郑'
AND 雇员.`名字` = '建杰'
ORDER BY 销售额 DESC

7. 建立产品与订单的关联

SELECT *
FROM 订单
LEFT JOIN 订单明细 ON 订单.`订单ID` = 订单明细.`订单ID`
LEFT JOIN 产品 ON 订单明细.`产品ID` = 产品.`产品ID`


8. 找出订单10284的所有产品以及订单金额,运货商

SELECT 产品名称, ROUND((订单明细.`单价` * 数量 * (1 - `折扣`)),2) AS 订单金额, 公司名称
FROM 订单明细
LEFT JOIN 产品 ON 订单明细.`产品ID` = 产品.`产品ID`
LEFT JOIN 订单 ON 订单明细.`订单ID` = 订单.`订单ID`
LEFT JOIN 运货商 ON 订单.`运货商` = 运货商.`运货商ID`


9. 计算销量前10位的订单明细,结果集返回订单ID,订单日期,公司名称,发货日期,销售额,并排序

SELECT 订单.订单ID, 订购日期, 公司名称, 发货日期, ROUND((订单明细.单价 * 数量 * (1 - 折扣)), 2) AS 销售额
FROM  订单
LEFT JOIN 运货商 ON 订单.`运货商` = 运货商.`运货商ID`
LEFT JOIN 订单明细 ON 订单.`订单ID` = 订单明细.`订单ID`
ORDER BY 销售额 DESC
LIMIT 10


10. 按年度统计销售额

SELECT YEAR(订单.订购日期) AS 年度, SUM(ROUND((订单明细.单价 * 数量 * (1 - 折扣)),2)) AS 销售额
FROM 订单明细
LEFT JOIN 订单 ON 订单.`订单ID` = 订单明细.`订单ID`
GROUP BY 年度


11. 查询供应商中能够供应的产品样数最多的供应商

初步答案为:

SELECT 公司名称 AS 供应商, COUNT(产品名称) AS 产品样数
FROM 产品
LEFT JOIN 供应商 ON 产品.`供应商ID` = 供应商.`供应商ID`
GROUP BY 供应商
ORDER BY 产品样数 DESC
LIMIT 1

此处考虑通过MAX进行优化,但还未成功


12. 查询产品类别中包含的产品数量最多的类别

SELECT 类别名称, COUNT(产品.类别ID) AS 数量
FROM 类别,产品
WHERE 类别.`类别ID` = 产品.`类别ID`
GROUP BY 类别名称
ORDER BY 数量 DESC
LIMIT 1


13. 找出所有的订单中经由哪家运货商运货次数最多

SELECT 公司名称 AS 运货商, COUNT(运货商) AS 运货次数
FROM 订单, 运货商
WHERE 订单.`运货商` = 运货商.`运货商ID`
GROUP BY 运货商
ORDER BY 运货次数 DESC
LIMIT 1


14. 按类别,产品分组,统计销售额

SELECT 类别.类别名称, 产品.产品名称, SUM(ROUND((订单明细.单价 * 数量 * (1 - 折扣)),2)) AS 销售额
FROM 订单明细
LEFT JOIN 产品 ON 订单明细.`产品ID` = 产品.`产品ID`
LEFT JOIN 类别 ON 产品.`类别ID` = 类别.`类别ID`
GROUP BY 类别名称, 产品名称


15. 查询海鲜类别最大的一笔订单

SELECT 订单ID, 数量, 产品.产品名称, ROUND((订单明细.单价 * 数量 * (1 - 折扣)),2) AS 销售额
--
-- 最大理解为销售额最大
--
FROM 订单明细
LEFT JOIN 产品 ON 订单明细.`产品ID` = 产品.`产品ID`
LEFT JOIN 类别 ON 产品.`类别ID` = 类别.`类别ID`
WHERE 类别.`类别名称` = '海鲜'
ORDER BY 销售额 DESC
LIMIT 1


⭐️⭐️⭐️

16. 按季度统计销售量

本题在季度这里卡住了,经过查阅有以下两种方法。

  • 方法一:
SELECT SUBSTRING(订单.订购日期, 1, 4) 年度, QUARTER(订单.订购日期) 季度, SUM(订单明细.数量) 订购数量
FROM 订单
LEFT JOIN 订单明细 ON 订单明细.订单ID = 订单.订单ID
GROUP BY 年度,季度
ORDER BY 年度,季度


其中:
SUBSTRING(name, num1, num2)为字符串截取函数,截取name这个字段从第num1个字符开始,只截取之后的num2个字符(此处也可以通过YEAR()函数替代)。

QUARTER(date)返回年份日期的季度值,范围为1〜4。

  • 方法二:
SELECT YEAR(订单.`订购日期`) AS 年度,(CASEWHEN MONTH(订单.`订购日期`) IN (1,2,3) THEN '1'WHEN MONTH(订单.`订购日期`) IN (4,5,6) THEN '2'WHEN MONTH(订单.`订购日期`) IN (7,8,9) THEN '3' ELSE '4' END) AS 季度,
SUM(订单明细.数量) AS 订购数量
FROM 订单
LEFT JOIN 订单明细 ON 订单明细.订单ID = 订单.订单ID
GROUP BY 年度,季度
ORDER BY 年度,季度


方法二用到了CASE WHEN THEN ELSE多条件判断。当月份为(1,2,3)时,季度为1;月份为(4,5,6)时,季度为2;月份为(7,8,9)时,季度为3;月份为(10,11,12)时,季度为4。

方法二在该题相对方法一较麻烦。


17. 查出订单总额超出5000的所有订单,客户名称,客户所在地区

SELECT 订单.订单ID, 订单.客户ID, 地区, SUM(ROUND((订单明细.`单价` * `数量` * (1 - 折扣)),2)) AS 总额
FROM 订单
LEFT JOIN 订单明细 ON 订单.`订单ID` = 订单明细.`订单ID`
LEFT JOIN 客户 ON 订单.`客户ID` = 客户.`客户ID`
GROUP BY 订单ID
HAVING 总额 > 5000
ORDER BY 总额 DESC


18. 查询哪些产品的年度销售额低于2000

SELECT YEAR(订单.订购日期) AS 年度,产品.产品名称, SUM(ROUND((订单明细.单价 * 数量 * (1 - 折扣)),2)) AS 销售额
FROM 订单明细
LEFT JOIN 订单 ON 订单.`订单ID` = 订单明细.`订单ID`
LEFT JOIN 产品 ON 订单明细.`产品ID` = 产品.`产品ID`
GROUP BY 年度, 产品名称
HAVING 销售额 < 2000
ORDER BY 年度


19. 查询所有订单ID开头为102的订单

SELECT *
FROM 订单
WHERE 订单ID LIKE '102%'


20. 查询所有“中硕贸易”,“学仁贸易”,“正人资源”,“中通”客户的订单,(要求使用in函数)

SELECT *
FROM 订单, 客户
WHERE 订单.`客户ID` = 客户.`客户ID`
AND 客户.`公司名称` IN ('中硕贸易', '学仁贸易', '正人资源', '中通')

SQL查询语句练习(二)相关推荐

  1. SQL 查询语句总是先执行 SELECT?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"1024"领取惊喜资料 很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟 ...

  2. 没错,纯SQL查询语句可以实现神经网络

    我们熟知的SQL是一种数据库查询语句,它方便了开发者在大型数据中执行高效的操作.但本文从另一角度嵌套SQL查询语句而构建了一个简单的三层全连接网络,虽然由于语句的嵌套过深而不能高效计算,但仍然是一个非 ...

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

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

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

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

  5. php 中 sql 查询语句怎么写,sql查询语句有哪些

    sql查询语句:1.查看表结构[SQL>DESC emp]:2.查询所有列[SQL>SELECT * FROM emp]:3.查询指定列:4.查询指定行:5.使用算术表达式:6.使用逻辑操 ...

  6. DBeaver 给id设置为键 以及执行sql查询语句

    一.设置键 可以看到在information表中,设置id为主键. 步骤: 1.点到 约束 => 右键后 新建约束 2.点击id这个字段 => 确定 二.执行sql查询语句 目标 : 查询 ...

  7. SQL查询语句大全(转)

    转自https://www.cnblogs.com/chenglc/p/8421492.html 重点参考https://blog.csdn.net/g1418377085/article/detai ...

  8. (转)经典SQL查询语句大全

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  9. orcal SQL查询语句大全集锦

    orcal   SQL查询语句大全集锦 一. 简单查询   简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的 表或视图.以及搜索条件等. 例 ...

  10. Mysql常规27种sql查询语句

    Mysql常规27种sql查询语句 话不多说,直接上干货 1.查询部分列 select 列名 from 表名 例:员工表中查询员工编号.名字.邮箱 select employee_id,employe ...

最新文章

  1. leetcode算法题--最大正方形
  2. 【eoe教程】Android中自定义视图的绘制方法
  3. 快速学习AJAX之三 Ajax实现登陆
  4. pythonrequest得替代_Python爬虫通过替换http request header来欺骗浏览器实现登录功能...
  5. 【JAVA基础篇】String类详解
  6. 接口对前后端和测试的意义
  7. html语言中的链接方式,什么是超链接_在html中设置超链接的方法 - 驱动管家
  8. 浅谈三层架构 通过这个,+Java开发模式经验。终于相通了,动软到底是为什么这么做...
  9. mybatis框架增删改的注意事项 ,不同数据库取消转义的方法
  10. 5G网络将给物联网卡带来什么发展前景
  11. 悟透LoadRunner - 调用外部DLL的点点滴滴
  12. vmware 14 激活码
  13. 全网最简单的方法QQ透明头像设置方法(小白教程)几分钟搞定
  14. 洛谷刷题C语言:Even? Odd? G、The Robot Plow G、pb的游戏(1)、询问学号、cover
  15. BZOJ1022:[SHOI2008]小约翰的游戏John(博弈论)
  16. Python实例1—打印购物小票
  17. oh-my-zsh提示符显示当前用户名和主机名
  18. VsCode工具开发vue项目必装插件
  19. Keep上市,流血不止
  20. Cocos2dx 2.1.5 孤狼优化整合版V1.0(32位)

热门文章

  1. 使用Excel批量添加数据
  2. p2000显卡LINUX无显示,petalinux 2020.01工程 linux系统启动不完全
  3. 智能优化算法之鸟群算法(BSA)的实现(Python附源码)
  4. 一零零九、Docker搭建 全集群 环境配置
  5. android 联系人 头像
  6. Java之List系列--去重的方法
  7. 男人不知道的15件事
  8. 设置3389端口远程终端服务方案解析
  9. 编辑-发布-开发分离: 静态API设计
  10. 2017年科技界十大新闻,你都知道吗?