如何查找一张表中商品名称、品牌和型号相同但价格不同的记录,主要给出查找的思路和方法,以及语句结构。
left joiin 自己
双层开窗可否?虽然性能挺差
内层通过商品名称,品牌,型号分区归类,例如使用rank发号但是order by常量发一样的号
rank() over(partition by 商品名称,品牌,型号 order by 1) as rn
外层在做一次 rn 和价格的窗口就能看到rn相同的记录是否存在价格差异导致的不同二级rn
rank() over( partition by rn order by price) as rn2
假设是mysql
假设只用查对应的主键,可以用下面这个sql
select 商品名称,品牌,型号,
group_concat(id SEPARATOR ',') id_collect
from 表
group by 商品名称,品牌,型号
having count(distinct 价格)>1
假设是要查满足条件的完整记录,开一次窗就行了
select b.* from (
select a.*,count(distinct 价格) over(partition by 商品名称,品牌,型号) ct from 表 a) b
where ct>1