#sql
#sql
Вопрос:
Я вроде как новичок в SQL.
SELECT EMP_NAME, MAX(count(CONTRACT_CLIENT)
FROM CONTRACT JOIN EMPLOYER ON (CONTRACT_ID = EMP_ID)
WHERE EMP_ID = CONTRACT_ID;
в результате появляется отсутствующая правая скобка. Чувствую себя полностью потерянным.
Ответ №1:
Кажется, вы хотите найти сотрудника с максимальным количеством контрактов. Вот один из подходов:
SELECT EMP_NAME, CC_CNT
FROM
(
SELECT EMP_NAME, COUNT(CONTRACT_CLIENT) AS CC_CNT
FROM CONTRACT
INNER JOIN EMPLOYER ON CONTRACT_ID = EMP_ID
GROUP BY EMP_NAME
ORDER BY COUNT(CONTRACT_CLIENT) DESC
) t
WHERE rownum = 1;
Ключевые шаги, которые вы пропустили, включают агрегирование по использованию employee GROUP BY
. И кроме того, вы не можете вложить вызов в COUNT
inside MAX
. Вместо этого используйте rownum
трюк, чтобы найти сотрудника с наибольшим количеством.
Комментарии:
1. emp относится к работодателю, который является клиентом, консультант — сотрудник. Я ищу, у какого работодателя больше всего контрактов с нами
2. Упс… тогда, я думаю,
EMP_NAME
должно означать «Имя работодателя». Неважно, я все еще думаю, что логика, которую я дал вам выше, — это то, что вы хотите здесь.
Ответ №2:
Я сомневаюсь, что ваш SQL-запрос вернет правильный вывод, но я исправляю проблему с круглыми скобками для вас.
SELECT EMP_NAME, MAX(COUNT(CONTRACT_CLIENT))
FROM CONTRACT
JOIN EMPLOYER ON (CONTRACT_ID = EMP_ID)
WHERE EMP_ID = CONTRACT_ID;
Комментарии:
1. Если вы только исправляете опечатку, то, пожалуйста, не отвечайте, вместо этого проголосуйте за закрытие вопроса как вопроса с опечаткой (но есть много других проблем помимо этого).