2017-10-05 72 views
0

为加入日期的老师准备一张表,需要查询查找大部分加入学校的老师并且查询应显示加入该老师的年份和no年。
我已经写了查询得到了使用限制的结果,但有没有其他方式来编写查询。不用rownum或者限制选择max(value)和相应的行

select 
    count(teah_id) as no_of_teachers, 
    substr(DATE_OF_JOINING,1,4) as year 
from teacher 
group by substr(DATE_OF_JOINING,1,4) 
order by count(phy_id) desc 
limit 1 
+0

'LIMIT'不是有效的Oracle语法,据我所知。你在使用MySQL吗? –

+0

是使用Mysql。如何在不使用rownum的情况下在oracle中编写相同的查询? – mohan

回答

0

你可以把你的当前查询到的CTE,然后再用它来寻找最高计数:

with cte as (
    select 
     count(teah_id) as no_of_teachers, 
     substr(DATE_OF_JOINING,1,4) as year 
    from teacher 
    group by substr(DATE_OF_JOINING, 1, 4) 
) 

select 
    year, 
    no_of_teachers 
from cte 
where 
    no_of_teachers = (select max(no_of_teachers) from cte);