#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 не нравится этот конкретный синтаксис