внутреннее соединение для получения строки с максимальным значением столбца - PullRequest
0 голосов
/ 27 мая 2020

Я пытался получить значение строк, в которых максимальное значение столбца. но как-то не работает. пожалуйста, помогите немного.

Позвольте мне объяснить проблему

таблица 1 name = agency columns agency_id, agency_name

table 2 name = client columns client_name, total_bill, agency_id

то, что я хочу получить, это имя клиента, название агентства и total_bill строки, для которой значение total_bill является максимальным.

вот запрос, который я использовал

SELECT a.agency_name 
FROM agency a 
INNER JOIN (SELECT agency_id, client_name, MAX(total_bill) total_bill FROM client GROUP BY agency_id ) c 
ON a.agency_id = c.agency_id;

не могли бы вы сказать мне, где я ошибаюсь?

Я получаю эту ошибку -

Expression #2 of SELECT list is not in GROUP BY clause and contains 
nonaggregated column 'agency-app.client.client_name' which is not 
functionally dependent on columns in GROUP BY clause; this is incompatible
with sql_mode=only_full_group_by

дайте мне знать, как это исправить.

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

Если вы хотите стать лучшим клиентом, вы можете просто присоединиться, заказать и ограничить:

select 
    a.agency_name,
    c.client_name,
    c.total_bill
from agencies a
inner join clients c on c.agency_id = a.agency_id
order by c.total_bill desc
limit 1
1 голос
/ 27 мая 2020

Попробуйте этот запрос:

SELECT client.name, agency.name, client.total_bill
FROM agency, client 
WHERE agency.agency_id=client.agency_id 
AND client.total_bill=(SELECT MAX(total_bill) FROM client)
...