SQL: нужна помощь в написании запроса, который будет отображаться, если у человека есть кто-либо с более низкой должностью

#mysql #sql #oracle-sqldeveloper

#mysql #sql #oracle-sqldeveloper

Вопрос:

Я пытаюсь написать запрос, который будет отображаться, есть ли у человека кто-либо с более низкой должностью

 SELECT Count(job)
FROM emp 
GROUP BY job
HAVING job < 'MANAGER'; 
  

Кто-нибудь будет достаточно любезен, чтобы помочь мне с этим?

Приветствия

-Джей

Ответ на мой вопрос должен быть:

 Number of subORD
---------------------                                                           
                    6    
  

Комментарии:

1. Как вы определяете, какие должности подчинены другим? Есть ли какое-то level поле в вашей базе данных?

2. Нам нужно посмотреть, как выглядит структура вашей таблицы.

3. @DylanSmith — Извините, ребята, я добавил больше информации в queston

4. подождите, дайте мне загрузить несколько таблиц.

5. Как мы используем таблицу SALGRADE, чтобы определить, есть ли у кого-либо подчиненные? Если их оценка больше некоторого числа, означает ли это, что у них есть подчиненные?

Ответ №1:

Как насчет:

 SELECT COUNT(*) FROM (
SELECT Super
FROM Emp 
GROUP BY Super
HAVING Super IS NOT NULL)
  

Комментарии:

1. Извините, я не знал, что президент не считается. Попробуйте исправленную версию. Это просто более простая версия Dylan’s.

2. Какой ответ он возвращает? Если он по-прежнему возвращает 7, измените предложение HAVING на: НЕ ЯВЛЯЕТСЯ НУЛЕВЫМ.

3. Хах .. тогда мы, наконец, получаем исправленную версию Дилана.. Вы не можете использовать ‘WHERE’ в агрегатах.

4. Спасибо, что потратили много времени на это, ребята! работает отлично!

Ответ №2:

Как насчет

 Select count(*) as Supers
FROM (
Select distinct e1.EmpNo
from Emp e1 join Emp e2 on e1.EmpNo = e2.Super)
  

Ответ №3:

Предполагая, что вы можете определить, есть ли у сотрудника A подчиненные, проверив, включают ли какие-либо другие сотрудники его идентификатор в качестве своего «СУПЕР».

 SELECT COUNT(*) FROM (
SELECT Super
FROM Emp
WHERE Super > 0
GROUP BY Super) AS Supervisors
  

Комментарии:

1. ORA-00933: команда SQL неправильно завершена 00933. 00000 — «Команда SQL неправильно завершена» * Причина: * Действие: Ошибка в строке: 6 Столбец: 21

2. попробуйте сейчас (удалено предложение having). Это сработало бы в SQL Server, прошло слишком много времени с тех пор, как я делал Oracle, но я считаю, что это действительный ANSI SQL, поэтому я ожидаю, что он будет работать даже в Oracle…

3. попробуйте избавиться от «КАК супервизоры» в конце, возможно, Oracle не нравится этот конкретный синтаксис