Я создал базу данных для воображаемых адвокатов, мой последний запрос сводит меня с ума.Мне нужно определить сумму, которую адвокат заработал в своей карьере в компании, у меня есть time_spent
и rate
для умножения и специальная ставка для прибавления.(по корпоративным контрактам действует специальная ставка, поэтому не во многих случаях они есть).лучшее, что я мог придумать, это код ниже.Он делает то, что я хочу, но отображает только солиситоры, работающие с делом, к которому применена специальная ставка.
Я хочу, чтобы он отображал результат запроса в таблице, даже если специальная ставка равна NULL.
Я приказал таблице сначала показать наибольшую сумму, чтобы я мог использовать ROWNUM, чтобы показывать только 10% получателей.
CREATE VIEW rich_solicitors AS
SELECT notes.time_spent * rate.rate_amnt + special_rate.s_rate_amnt AS solicitor_made,
notes.case_id
FROM notes,
rate,
solicitor_rate,
solicitor,
case,
contract,
special_rate
WHERE notes.solicitor_id = solicitor.solicitor_id
AND solicitor.solicitor_id = solicitor_rate.solicitor_id
AND solicitor_rate.rate_id = rate.rate_id
AND notes.case_id = case.case_id
AND case.contract_id = contract.contract_id
AND contract.contract_id = special_rate.contract_id
ORDER BY -solicitor_made;
Запрос:
SELECT *
FROM rich_solicitors
WHERE ROWNUM <= (SELECT COUNT(*)/10
FROM rich_solicitors)