Oracle 10g SQL com erro de compilação de cláusula
Pergunta
O erro de compilação diz "MM" e "CC" é um identificador inválido!
with m as (
select instructor,
count(*) as c
from class
group by instructor),
mm as (
select max(m.c) as cc
from m)
select m.instructor
from m
where m.c = mm.cc;
Solução
O erro é porque mm
é o nome da instância de fatoração (também conhecida como CTE), mas como você pode ver:
SELECT m.instructor
FROM m
WHERE m.c = mm.cc;
Você não declarou mm
como uma junção para o m
instância. Usar:
WITH m AS (
SELECT instructor,
COUNT(*) as c
FROM CLASS
GROUP BY instructor),
mm AS (
SELECT MAX(m.c) as cc
FROM m)
SELECT m.instructor
FROM m
JOIN mm ON mm.cc = m.c
Outras dicas
Presumo que você esteja tentando obter o instrutor com mais classes.
Você não poderia usar
Select m.instructor FROM (select instructor, count(*) as c from class group by instructor order by 2 desc) m where rownum = 1
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow