每日一题-22

题22:

(1)只出现一次的最大数字
根据下表编写一个SQL查询来报告最大的单一数字。如果不存在单一数字,查询需报告null。
在这里插入图片描述
解题思路:
用自查询把只是单一的数字查询出来,然后用max函数即可。

SELECT 
	MAX(num) as num
FROM
	(SELECT
		num
	FROM
		MyNumbers 
	GROUP BY num
	HAVING COUNT(num) = 1) AS m;

(2)每家商店的产品价格
写出一个SQL查询语句,查找每种产品在各个商店中的价格。
在这里插入图片描述
其中:

  • (product id,store)是这个表的主键;
  • store字段是枚举类型,它的取值为以下三种(‘storel’,‘store2’,‘store3’);
  • price是该商品在这家商店中的价格。

解题思路:
这是一个行转列的问题,使用group by分组计算,取每一组中对应情况的通过case when +聚合函数(min,max,sum,avg)的结合,求出相同产品在不同商店中的price即可。

SELECT 
    product_id, 
    SUM(CASE store WHEN 'store1' THEN price ELSE null END) AS store1, 
    SUM(CASE store WHEN 'store2' THEN price ELSE null END) AS store2, 
    SUM(CASE store WHEN 'store3' THEN price ELSE null END) AS store3
FROM products
GROUP BY product_id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值