(202307)wonderful-sql:集合运算(task4)

教程链接:Datawhale - 一个热爱学习的社区

知识学习(随记)

  1. 从表的加减法中间的练习题可以看出,union不仅可以用于对两个表取并,也可以用于对同一个表的不同条件的筛选取并。
  2. 也可以用union测试数据的兼容性。
  3. mysql即使到了8.0,也还是有好些不支持的运算。

练习题

4.1 找出 product 和 product2 中售价高于 500 的商品的基本信息

sql 复制代码
SELECT *
  FROM Product
WHERE sale_price > 500
 UNION ALL
SELECT *
  FROM Product2
WHERE sale_price > 500;

4.2 借助对称差的实现方式, 求product和product2的交集

sql 复制代码
SELECT *
FROM
(SELECT * 
FROM product
UNION
SELECT *
From product2) u
WHERE product_id NOT IN
(SELECT product_id
FROM product
WHERE product_id NOT IN (SELECT product_id FROM product2)
UNION
SELECT product_id
FROM product2
WHERE product_id NOT IN (SELECT product_id FROM product));

4.3 每类商品中售价最高的商品都在哪些商店有售 ?

sql 复制代码
SELECT sp.shop_id, sp.shop_name, sp.product_id, p.product_type
FROM shopproduct sp
INNER JOIN product p
ON sp.product_id = p.product_id
WHERE sp.product_id IN 
(SELECT product_id
FROM product p1
INNER JOIN (SELECT product_type, MAX(sale_price) as max_price
FROM product
GROUP BY product_type) p2
ON p1.product_type = p2.product_type AND p1.sale_price=p2.max_price);

4.4 分别使用内连结和关联子查询每一类商品中售价最高的商品

内连结查询

sql 复制代码
SELECT product_name, product_type, sale_price
FROM product AS P1
WHERE sale_price = (SELECT MAX(sale_price)
FROM product AS P2
WHERE P1.product_type = P2.product_type)

关键子查询

sql 复制代码
SELECT P1.product_id, P1.product_name, P1.product_type, P1.sale_price, P1.max_price
FROM product AS P1
INNER JOIN (SELECT product_type, MAX(sale_price) AS max_price
FROM product
GROUP BY product_type) AS P2 ON P1.product_type = P2.product_type
WHERE P1.sale_price = P2.max_price

4.5 用关联子查询实现:在 product 表中,取出 product_id, product_name, sale_price, 并按照商品的售价从低到高进行排序、对售价进行累计求和。

sql 复制代码
SELECT product_id, product_name, sale_price,(SELECT SUM(sale_price)
FROM product p2 WHERE p2.sale_price <= p1.sale_price) AS cumulative_sum
FROM product p1
ORDER BY sale_price;
相关推荐
研究员子楚19 小时前
GEO行业发展标准体系白皮书V2.0-第10卷 · 全球篇:跨国标准协同与全球品牌语义治理框架
数据库·人工智能·microsoft·架构·geo
Omics Pro20 小时前
深度学习多组学互作:组内+组间
数据库·人工智能·深度学习·mysql·搜索引擎·自然语言处理
残*影21 小时前
如何优雅地保存MySQL数据变更历史?
数据库·mysql
乐观的Terry21 小时前
3、数据库设计与领域实体
java·数据库·spring boot·spring cloud·ai编程
舞影天上21 小时前
RuoYi-Vue-Plus Docker 部署踩坑:MySQL 中文双重编码的根因与修复
数据库
Database_Cool_1 天前
数据仓库弹性扩缩容怎么实现?AnalyticDB MySQL 在线扩容 0 中断实战
数据库·数据仓库·mysql·阿里云
Wzx1980121 天前
Redis&ES——Retriever的抽象实现
数据库·人工智能·redis·elasticsearch
G.O.G.O.G1 天前
《LeetCode SQL 从入门到进阶(MySQL)》06(下)
数据库·sql·oracle
heimeiyingwang1 天前
【架构实战】SQL注入与XSS防御:常见Web漏洞的系统性修复
前端·sql·架构
zandy10111 天前
多租户SaaS架构下的BI数据隔离与权限治理体系
数据库·架构·数据加密