每日一题-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;

おすすめ

転載: blog.csdn.net/Txixi/article/details/121534697