Select MAX(end_contract-start_contract), job_description, employer_name
FROM contracts join jobs on contracts_job = jobs_id
join employers on contracts_client = employer_id
WHERE contracts_end is not NULL
GROUP BY jobs_id,jobs_desc,employer_name
Этот запрос в настоящее время выводит:
MAX(end_contract-start_contract) jobs_desc employer_name
-------------------------------- --------------- ------------------------------
153 Janitor Microsoft
80 Soldier Microsoft
119 UNDEFINED USPS
290 UNDEFINED Microsoft
89 Pilot USNC
119 Cook USNC
232 driver USNC
340 Soldier USMC
Я хочу, чтобы результат был:
MAX(end_contract-start_contract) jobs_desc employer_name
-------------------------------- --------------- ------------------------------
340 Soldier USMC
Вот почему я использовал max(), но не могу понять, почему он просто не показывает максимальное значение. Я очень новичок в SQL
Я подозреваю, что агрегация не делает что-то полезное в вашем коде. Если вам нужен контракт с максимальной продолжительностью, вы можете просто order by
и fetch
:
select c.contract_end - c.contract_start as contract_days, j.desc, e.emp_name
from contract c
inner join job j on c.contract_job = j.job_id
inner join employer e on c.contract_client = e.emp_id
where c.contract_end is not null
order by contract_days desc
fetch first 1 row with ties
@ Миллидан. . . Когда вы используете его где? Это должно быть хорошо в пункте order by
.
Это может быть более интуитивно понятным:
Select CONTRACT_END-CONTRACT_START, JOB_DESC, EMP_NAME
FROM CONTRACT join JOB on CONTRACT_JOB = JOB_ID
join EMPLOYER on CONTRACT_CLIENT = EMP_ID
WHERE CONTRACT_END is not NULL
AND CONTRACT_END-CONTRACT_START=(Select MAX(CONTRACT_END-CONTRACT_START) FROM CONTRACT)
я получаю сообщение об ошибке из вашего решения. Я не знаю, почему ORA-00936: отсутствует выражение 00936. 00000 - "отсутствует выражение" * Причина: * Действие: Ошибка в строке: 5 Столбец: 1
Я только что отредактировал его. Вы должны взять их с небольшим количеством соли. Идея была, но она может быть прямо сейчас. Я не проверял это.
Мне жаль, что вы правы, это было простое редактирование. Теперь работает спасибо.
когда я использую "contract_days", я получаю сообщение об ошибке: ORA-00904: "CONTRACT_DAYS": неверный идентификатор 00904. 00000 - "%s: неверный идентификатор"