Oracle 12c-过滤具有多个值的记录

时间:2018-08-10 17:45:50

标签: sql oracle oracle12c

我有2列:

DEPT_ID号; DEPT_SUB_ID varchar2(5);

我想查找所有具有多个DEPT_SUB_ID唯一值的DEPT_ID。

这怎么办?

3 个答案:

答案 0 :(得分:2)

我会使用:

select dept_id
from x
group by dept_id
having min(dept_sub_id) <> max(dept_sub_id);

在许多情况下,两个简单的聚合(例如min()max())的性能要优于count(distinct)

答案 1 :(得分:0)

简单地使用count不同。

select dept_id,count(distinct dept_sub_id) 
from dept 
group by dept_id 
having count(distinct dept_sub_id) > 1;

答案 2 :(得分:0)

select dept_id, count(distinct dept_sub_id)
from x
group by dept_id
having count(distinct dept_sub_id) > 1

这里的键是count(distinct),用于计算dept_id中明显不同的dept_sub_id

分组依据,显然是按dept_id将计数分组

具有一个类似于group-by进行分组之后的“位置”。