2017-01-28 2 views
0

У меня есть таблица в оракуле с уникальными значениями столбца. Комбинации также не уникальны. Но объединение в определенном порядке должно быть уникальным. Я пробовал много решений. This вопрос самый близкий, но мне нужно решение в Oracle SQL. Ниже мой столНайти значения столбцов, связанные с более чем одним значением столбцов в Oracle

-------------------------------------------------- 
    Teacher   subject    class_id 
-------------------------------------------------- 
    Paul    English    001 
    Paul    English    002 
    Allen    English    003 
    Sia    Maths    134 
    John    Computer    913 
    Jack    Physics    341 
    Arlene   Maths    001 
------------------------------------------------- 

запрос должен возвращать только следующую информацию

English, Maths 

т.е. предметы, которые связаны с более чем учителей.

ответ

0

Если я правильно понял, вам нужны предметы, которые имеют более одного учителя. Это простое объединение запросов с пунктом having:

select subject 
from t 
group by subject 
having min(teacher) <> max(teacher); 
1

Может быть, вы хотите что-то вроде этого:

select listagg (subject, ', ') within group (order by subject) subjects 
from (
    select subject from classes 
    group by subject 
    having count(teacher)>1 
); 

SUBJECTS                  
------------------------- 
English, Maths 

или вы можете достичь того же результата с аналитическими функциями:

select listagg (subject, ', ') within group (order by subject) subjects 
from (
    select subject, 
    count(teacher) over (partition by subject) teachers, 
    row_number() over (partition by subject order by class_id) rn 
    from classes 
) 
where teachers>1 and rn=1 
; 
Смежные вопросы