Проверка только на наличие дублирующихся строк - PullRequest
2 голосов
/ 14 апреля 2020

Я хочу проверить, одинаковы ли все годы в категории, и вернуть, если это так, поэтому я хочу вернуть только 4 и 5. Я мог бы получить эту таблицу, но не дальше.

SELECT 
    st.category,  
    EXTRACT ( YEAR FROM hiredate) as YEAR 
FROM NIKOVITS.EMP e, 
NIKOVITS.SAL_CAT st 
WHERE e.sal > st.lowest_sal AND e.sal < st.highest_sal

Result of the query

1 Ответ

1 голос
/ 14 апреля 2020

Вы можете использовать агрегирование:

select st.category, min(extract(year from e.hiredate)) yr
from nikovits.emp e
inner join nikovits.sal_cat st 
    on  e.sal > st.lowest_sal 
    and e.sal < st.highest_sal
group by st.category
having min(extract(year from e.hiredate)) = max(extract(year from e.hiredate))

Обратите внимание, что в этом запросе используется стандартный синтаксис соединения с ключевым словом on), а не неявное соединение (с запятой в * 1007). * пункт). Этот старый синтаксис из десятилетий go не должен использоваться в новом коде.

Кроме того, все столбцы в запросе должны быть дополнены таблицей, к которой они принадлежат, чтобы избежать неоднозначности; Я сделал предположение, что hiredate принадлежит таблице emp.

...