计算订单列表中的两次出现次数
Count double occurrences in order list
我有一个订单列表,我需要找出哪些订单在不同用户身上多次出现代码 47。例如:
ORDER_ID CODE USER
111 47 1
111 47 2
222 47 1
333 47 1
333 47 2
444 47 1
预期结果是 111 和 333。
我怎样才能做到这一点?
此致
我想你想要聚合 having
:
select order_id
from orders o
where code = 47
group by order_id
having min(user) <> max(user);
您也可以将 having
表示为:
having count(distinct user) >= 2
你可以试试下面的-
select order_id from tablename
group by order_id
having count(distinct user)>=1
您也可以通过 row_number() 完成
Select distinct order_id from
(select order_id, code, row_number()
over
( Partition by order_id, code
Order by order_id, code) rn
from
tablename
where user in (1,2)
) where rn>=1
但我猜你已经有了一个用户栏,因此我认为你不需要额外的操作
Select orderid, code from table
Group by orderid, code having
max(distinct user) >=1
我有一个订单列表,我需要找出哪些订单在不同用户身上多次出现代码 47。例如:
ORDER_ID CODE USER
111 47 1
111 47 2
222 47 1
333 47 1
333 47 2
444 47 1
预期结果是 111 和 333。
我怎样才能做到这一点?
此致
我想你想要聚合 having
:
select order_id
from orders o
where code = 47
group by order_id
having min(user) <> max(user);
您也可以将 having
表示为:
having count(distinct user) >= 2
你可以试试下面的-
select order_id from tablename
group by order_id
having count(distinct user)>=1
您也可以通过 row_number() 完成
Select distinct order_id from
(select order_id, code, row_number()
over
( Partition by order_id, code
Order by order_id, code) rn
from
tablename
where user in (1,2)
) where rn>=1
但我猜你已经有了一个用户栏,因此我认为你不需要额外的操作
Select orderid, code from table
Group by orderid, code having
max(distinct user) >=1