现在需要写一个sql:两个要求:查询出只存在一个item_id 或者存在多个item_id但是要求supply_price相同则随机取一条,item_id为:762,763,764,请问该SQL怎么写

img

存在表如上,现在需要写一个sql:
两个要求:查询出只存在一个item_id 或者存在多个item_id但是要求supply_price相同则随机取一条,
按照以上要求可以查询出,item_id为:762,763,764,765,766(随便哪一条)的数据,
请问该SQL怎么写?

使用开窗函数,item_id分组编号,取编号为1的记录:

select item_id from (select item_id, row_number() over(partition by item_id) rid from xx_table) t where rid=1

1、那为什么不直接使用: count(supply_price) >= 1 呢,这样需求就都满足了啊?

select item_id from xx_table group by item_id having count(supply_price) >= 1 and count(distinct supply_price)=1;

嗯……甚至直接使用 count(distinct supply_price)=1 即可

select item_id from xx_table group by item_id having count(distinct supply_price)=1;