0
点赞
收藏
分享

微信扫一扫

Task04:集合运算-表的加减法和join等 —— 练习题

止止_8fc8 2022-02-18 阅读 57

本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql

练习题1

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

练习代码:

SELECT * 
FROM product
WHERE sale_price > 500
UNION
SELECT * 
FROM product2 
WHERE sale_price > 500;

练习结果:

练习题2

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

 练习代码:

SELECT * 
FROM product 
WHERE product_id IN (
SELECT product_id 
FROM product2)
UNION
SELECT *
FROM product2 
WHERE product_id IN (
SELECT product_id 
FROM product);

练习结果:

 练习题3

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

 练习代码:

SELECT 
c.product_id, c.product_name, c.product_type, c.sale_price, c.max_price, d.shop_id, d.shop_name
FROM (
SELECT a.product_id, a.product_name, a.product_type, a.sale_price, b.max_price
FROM product a
LEFT JOIN
(SELECT product_type, MAX(sale_price) AS max_price 
FROM product
GROUP BY product_type) b
ON a.product_type = b.product_type
WHERE a.sale_price = b.max_price) c
LEFT JOIN shop_product d
ON c.product_id = d.product_id;

练习结果:

练习题4

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

练习代码:

--内连结
SELECT a.product_id, a.product_name, a.product_type, a.sale_price
FROM product a
INNER JOIN
(SELECT product_type, MAX(sale_price) AS max_price 
FROM product
GROUP BY product_type) b
ON a.product_type = b.product_type
WHERE a.sale_price = b.max_price;
--关联子查询
SELECT product_id, product_name, product_type, sale_price
FROM product a 
WHERE sale_price >= (
SELECT MAX(sale_price)
FROM product b
WHERE a.product_type = b.product_type
GROUP BY product_type);

练习结果:

练习题5

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

练习代码:

SELECT product_id, product_name, sale_price,
(SELECT SUM(sale_price) FROM product b 
WHERE b.sale_price <= a.sale_price) AS ttl_sale_price
FROM 
(SELECT product_id, product_name, sale_price
FROM product  
ORDER BY sale_price) a;

练习结果:

举报

相关推荐

0 条评论