ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL之高级查询

2022-06-16 15:35:19  阅读:185  来源: 互联网

标签:product name -- 高级 查询 score MySQL orders SELECT


 

 

一,concat 拼接字段

-- 将姓名和成绩之间使用'-'将多个字段拼接在一起显示
SELECT CONCAT(name,"-",python_score,"-",sql_score,"-",test_score) from score;

  

 

 二,执行数学运算

 

 

-- 将两个值进行相加运算
SELECT name, python_score,sql_score, python_score+sql_score as 总成绩 FROM score

  

 

 

-- 总成绩大于250 的前3名
SELECT name,python_score,sql_score,test_score, python_score+sql_score+test_score as 总成绩 from score
-- 总成绩大于等于250
WHERE python_score+sql_score+test_score >= 250
-- 进行排序
ORDER BY 总成绩 DESC
-- 取前3个值
LIMIT 3

  

 

 三,聚合函数

 

-- python成绩最高是多少
SELECT max(python_score) FROM score;

  

SELECT sum(python_score) as Python总成绩,
	MAX(python_score) as Python最高得分,
	MIN(python_score) as Python最低得分,
	AVG(python_score) as Python平均分,
	COUNT(python_score) as 参加Python考试的总人数
	FROM score;

  

 

 四,数据分组

-- python成绩及格或者sql成绩及格的学员总数
SELECT COUNT(name) FROM score
WHERE python_score >= 60
OR
sql_score >= 60

  

 

 五,聚合函数灵活应用

 

 我们着重练习一个第三个问题,第二高的成绩,三种方法

SELECT max(product_price) from orders
		WHERE product_price < (
		-- 先计算最大值
			SELECT max(product_price) from orders
		)

  

SELECT DISTINCT product_price FROM orders
ORDER BY product_price DESC
LIMIT 1,1

  

SELECT DISTINCT product_price FROM orders
ORDER BY product_price DESC
LIMIT 1 OFFSET 1

  

六,分组,group by 

-- 查询2020-11-05 的订单
SELECT * from orders
WHERE order_time LIKE "2020-11-05%"

  

 

 

 我们从结果中可以看到,出来的结果中有不同的品牌,假设我要统计莫个品牌的信息

-- 查询2020-11-05 的 xiaomi 相关订单
SELECT * from orders
WHERE 
order_time LIKE "2020-11-05%"
AND
product_name = "xiaomi"

  统计小米当天的订单总数

-- 查询2020-11-05 xaimi 品牌的订单总数
SELECT count(*)  from orders
WHERE 
order_time LIKE "2020-11-05%"
AND
product_name = "xiaomi"

  每天都有大量的订单,如果我要统计每天的数据呢?

-- 查看品牌以及品牌对应记录条数,以及销售出去的每个品牌的总个数
SELECT product_name, COUNT(product_name) ,sum(product_order_num) FROM orders
GROUP BY product_name

  

 

 

 

-- 查看2020-11-05 这一天每个品牌以及这个品牌对应记录条数,和销售出去的每个品牌的总个数
SELECT product_name, COUNT(product_name) ,sum(product_order_num) FROM orders
WHERE order_time like "2020-11-05%"
GROUP BY product_name;

  

 

 

 

-- 查看2020-11-05 这一天每个品牌以及这个品牌对应记录条数,和销售出去的每个品牌的总个数
-- 显示 出货量大于80
SELECT product_name as 品牌, COUNT(product_name) as 订单记录 ,sum(product_order_num) as 出货量 FROM orders
-- 限定日期
WHERE order_time like "2020-11-05%" 
-- 根据名称分组
GROUP BY product_name
-- GROUP BY 的条件从句 主要可以使用聚集函数
HAVING sum(product_order_num) > 80

  

 

 

 having 使用方法

 

 

 

SELECT product_name as 品牌, COUNT(product_name) as 订单记录 ,sum(product_order_num) as 出货量 FROM orders
-- 限定日期
WHERE order_time like "2020-11-05%" 
-- 根据名称分组
GROUP BY product_name
-- GROUP BY 的条件从句 主要可以使用聚集函数
HAVING sum(product_order_num) > 80
And COUNT(product_name) BETWEEN 18 and 20

  也可以和order by  limint一起使用

SELECT product_name as 品牌, SUM(product_order_num*product_price) as 销售总额 FROM orders
WHERE order_time LIKE "2020-11-05%"
GROUP BY product_name
ORDER BY SUM(product_order_num*product_price) DESC
LIMIT 1

  

 

 

 七,子查询

(一个查询结果作为另外一个查询语句中的条件存在)

-- 查询单价最高的商品的销量数据
-- 显示出 此商品品牌的总营业额
-- 1. 先找到最大价格
SELECT max(product_price) from orders;

-- 2. 根据最大价格找到商品品牌
SELECT product_name FROM orders
WHERE product_price = (
	-- 子查询,执行的时候先运行子查询中的语句,结果作为 外层sql的查询条件。
	SELECT max(product_price) from orders
);

-- 3.根据商品品牌找到对应此品牌中的总销售额
SELECT sum(product_price*product_order_num) from orders
-- 商品品牌可能有多个
WHERE product_name in (
	-- 子查询 查询出品牌名称
	SELECT product_name FROM orders
	WHERE product_price = (
		-- 子查询,执行的时候先运行子查询中的语句,结果作为 外层sql的查询条件。
		SELECT max(product_price) from orders
	)
);

  

 

 

 

-- 查询非单价最高的商品的销量数据(除了商品单价最高的哪个品牌)
-- 显示出 此商品品牌的总营业额
SELECT product_name as 品牌, sum(product_price*product_order_num) as 总营销额 from orders
-- 商品品牌可能有多个
WHERE not product_name in (
	-- 子查询 查询出品牌名称
	SELECT product_name FROM orders
	WHERE product_price = (
		-- 子查询,执行的时候先运行子查询中的语句,结果作为 外层sql的查询条件。
		SELECT max(product_price) from orders
	)
)
group by product_name
ORDER BY 总营销额

  

 

-- 查询非单价最高的商品的销量数据(除了商品单价最高的哪个品牌)
-- 显示出 此商品品牌的总营业额
SELECT product_name as 品牌, sum(product_price*product_order_num) as 总营销额 from orders
-- 商品品牌可能有多个
WHERE not product_name in (
	-- 子查询 查询出品牌名称
	SELECT product_name FROM orders
	WHERE product_price = (
		-- 子查询,执行的时候先运行子查询中的语句,结果作为 外层sql的查询条件。
		SELECT max(product_price) from orders
	)
)
group by product_name
ORDER BY 总营销额

  

 

 

 

标签:product,name,--,高级,查询,score,MySQL,orders,SELECT
来源: https://www.cnblogs.com/shuaiyuan/p/16381976.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有