Отсутствует проблема выражения в SQL с использованием Oracle - PullRequest
0 голосов
/ 05 января 2019

Я хочу получить количество сотрудников по отделам, и я написал этот скрипт с использованием Oracle, но он всегда говорит, что отсутствует выражение

Столбцы, используемые в моих таблицах:

department :name (the name of the department) - 
depnum (the id of the department"primary key"), 
employee : empnum (the id of the employee) - 
depnum (the id of the department in which the employee in question is working "foreign key")

Запрос:

select 
    s.name 
from
    department s 
inner join 
    employee p on s.depnum = p.depnum 
group by 
    s.name 
having 
    count(p.empnum) = max(select count(p.empnum) 
                          from employee p, department s 
                          where s.depnum = p.depnum 
                          group by s.name) ;

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Если вы хотите количество сотрудников по отделам, я бы ожидал что-то вроде этого:

select s.name, count(*) as num_employees
from department s inner join
     employe p
     on s.depnum = p.depnum 
group by s.name ;

Если вам нужны названия отделов с максимальным количеством имен, вы можете использовать предложение having:

select s.name, count(*) as num_employees
from department s inner join
     employe p
     on s.depnum = p.depnum 
group by s.name 
having count(*) = (select max(cnt)
                   from (select count(*) as cnt
                         from employee e2
                         group by e2.depnum
                        ) e2
                  );

Проблема с вашим запросом заключается в том, что вы пытаетесь получить max() подзапроса. Этот синтаксис недопустим - и не нужен.

0 голосов
/ 05 января 2019

Вы SQL заявление не правильно, поэтому он выдал эту ошибку. Я думаю, что вы попробовали что-то вроде ниже

select s.name 
from department s 
inner join employe p on s.depnum=p.depnum 
group by s.name 
having count(p.empnum)=
select max(cnt) from 
( 
select count(p.empnum) as cnt
from employe p join department s 
on s.depnum=p.depnum 
group by s.name
 ) t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...