Вы можете использовать следующее: -
SELECT clients.id, clients.name, count(id_client) AS houses_owned FROM house JOIN clients ON id_client = clients.id
GROUP BY id_client
ORDER BY count(id_client) DESC LIMIT 1;
Однако, если несколько клиентов владеют одинаковым количеством домов, принадлежащих большинству, тогда будет возвращен только один из них.
Например, рассмотрим следующий тестовый пример (): -
DROP TABLE IF EXISTS house;
DROP TABLE IF EXISTS clients;
CREATE TABLE IF NOT EXISTS house (id INTEGER PRIMARY KEY, address TEXT, id_client INTEGER);
CREATE TABLE IF NOT EXISTS clients (id INTEGER PRIMARY KEY, name);
INSERT INTO clients (name) VALUES ('Fred'),('Mary'),('Tom'),('Jane');
INSERT INTO house (address,id_client) VALUES
('House 1',3),('House 2', 1),('House 3',2),('House 4',1),('House 5',3);
SELECT clients.id, clients.name, count(id_client) AS houses_owned FROM house JOIN clients ON id_client = clients.id
GROUP BY id_client
ORDER BY count(id_client) DESC LIMIT 1;
Результат будет: -
Однако у Тома также есть 2 дома, исключив условие LIMIT 1, что приводит к: -