天池龙珠计划SQL训练营-Task04学习打卡

天池龙珠计划SQL训练营 task04课程地址

练习题

4.1

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

SELECT product_id, product_name
  FROM product where sale_price > 500
 UNION
SELECT product_id, product_name
  FROM product2 where sale_price > 500;

4.2

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

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

4.3

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

SELECT
	SP.shop_id,SP.shop_name,P.*
FROM
	product AS P
	INNER JOIN ( 
		SELECT product_type, MAX( sale_price ) as sale_price FROM product GROUP BY product_type 
	) AS tp ON P.product_type = tp.product_type and P.sale_price = tp.sale_price
	left JOIN shop_product as SP ON SP.product_id = P.product_id
;

4.4

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

  • 内连接
SELECT
	P.* 
FROM
	product AS P
	INNER JOIN ( 
		SELECT product_type, MAX( sale_price ) AS mp FROM product GROUP BY product_type 
	) AS TP ON P.product_type = tp.product_type AND P.sale_price = TP.mp;
  • 子查询
select * from product where (product_type,sale_price) = any(
	select product_type,max(sale_price) from product group by product_type
);

4.5

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

SELECT
	product_id,product_name,sale_price,SUM( pp2 ) AS '累计销售价格' 
FROM
	(
SELECT
		p1.product_id,p1.product_name,p1.sale_price,p2.sale_price AS pp2 
	FROM
		product AS p1
		RIGHT JOIN product AS p2 ON p1.sale_price >= p2.sale_price
		ORDER BY p1.sale_price asc
	) as T
GROUP BY product_id ORDER BY sale_price asc;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值