【问题标题】:Checking only for duplicate rows仅检查重复行
【发布时间】:2020-04-14 18:01:57
【问题描述】:
我想检查类别中的所有年份是否相同,如果是则返回,
所以我只想返回 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
【问题讨论】:
标签:
sql
oracle
date
join
group-by
【解决方案1】:
你可以使用聚合:
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 关键字的标准 连接语法)而不是隐式连接(在from 子句中使用逗号)。这种几十年前的旧语法不应该在新代码中使用。
此外,查询中的所有列都应使用它们所属的表进行限定,以避免歧义;我假设hiredate 属于表emp。