Предполагая, что у меня есть следующая таблица базы данных Oracle user_data
:счетных Четкие Менеджеры по каждой стране
USER Manager Country
User 1 Manager 1 Canada
User 2 Manager 2 Canada
User 3 Manager 3 Canada
User 4 Manager 1 England
User 5 Manager 1 Scotland
User 6 Manager 1 Scotland
User 7 Manager 1 Scotland
User 8 Manager 1 England
У нас есть бизнес-правило, что менеджер несет ответственность только для страны, если они являются единственным менеджером пользователей в этой стране , Например, с предоставленными данными менеджер 1 несет ответственность только за Шотландию и Англию, но не за Канаду. У меня есть решение, но это очень медленный процесс, и я думаю, что должен быть лучший способ запроса данных:
SELECT DISTINCT manager, country
FROM user_data
WHERE country IN (
SELECT country FROM (
SELECT DISTINCT country, manager
FROM user_data
)
GROUP BY country
HAVING count(country) = 1
);
Любые идеи о более эффективном запросе, который определяет, какой менеджер несет ответственность за страну?
какая версия Oracle? сколько строк в таблице? Если запрос медленный, вы можете показать план объяснения? – kevinsky
Правильно ли выполняется запрос ur? – Bikku