0
点赞
收藏
分享

微信扫一扫

MySql获取最大三位数据

蓝莲听雨 2022-04-14 阅读 74
mysql

a1是产品销量表,a2是渠道表,a1和a2通过渠道ID关联

具体SQL如下:

-- 3.根据逗号截取前3个渠道
SELECT
	product_id,
	SUBSTRING_INDEX( channel, ',', 3 ) AS channel 
FROM
	(
	-- 2.根据产品分组,用GROUP_CONCAT拼接渠道,此处的渠道就是根据销量降序排列的数据了
	SELECT
		product_id,
		GROUP_CONCAT(
		DISTINCT ( Channel_Group )) AS channel 
	FROM
		(
		-- 1.获取每个渠道每个产品的销量之和,且根据销量降序排列
		SELECT
			a1.产品 ID,
			a2.渠道名,
			SUM( a1.销量 ) AS product_quantity_all 
		FROM
			a1
			LEFT JOIN a2 ON a1.渠道 ID = a2.渠道 ID 
		GROUP BY
			a1.产品 ID,
			a2.渠道 ID 
		ORDER BY
			a1.产品 ID,
			product_quantity_all DESC 
		) AS a 
	GROUP BY
	product_id 
	) AS b

简单的说就是先 GROUP BY,然后 ORDER BY 字段 DESC

然后 GROUP_CONCAT(DISTINCT())

然后再 SUBSTRING_INDEX(字段,‘,’,3)

举报

相关推荐

0 条评论