2017-10-05 4 views
0

Avoir une table pour l'enseignant avec la date d'adhésion, besoin d'écrire une requête pour trouver le plus enseignant a rejoint l'école et la requête devrait afficher l'année et non de l'enseignant qui a rejoint an.
J'ai écrit que la requête obtenait le résultat en utilisant Limit, mais existe-t-il un autre moyen d'écrire une requête?Sélectionnez max (valeur) et la ligne correspondante sans utiliser rownum ou limite

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' n'est pas valide la syntaxe Oracle pour autant que je sache. Utilisez-vous MySQL? –

+0

Oui en utilisant Mysql. Comment écrire la même requête dans Oracle sans utiliser Rownum? – mohan

Répondre

0

Vous pouvez mettre votre requête en cours dans un CTE, puis le réutiliser pour trouver le nombre le plus élevé:

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);