Эта проблема из следующих
https://www.programmerinterview.com/index.php/database-sql/advanced-sql-interview-questions-and-answers/
Предположим, у нас есть две таблицы:
Salesperson
ID Name Age Salary
Orders
Number order_date cust_id salesperson_id Amount
Вопрос следующий:
Мы хотим получить имена всех продавцов, которые имеют более 1 заказа из таблиц выше. Можно предположить, что у каждого продавца только один идентификатор. Вероятно, я бы также предположил, что все имена разные.
Мой ответ был таким.
select Name from
salesperson S inner join Orders O
on S.ID=O.salesperson_id
group by Name
having count(number) >=2
Однако данный ответ следующий:
SELECT Name
FROM Orders inner join Salesperson
On Orders.salesperson_id = Salesperson.ID
GROUP BY salesperson_id, NAME
Having count(salesperson_id) > 1
Если имя и salesperson_id один к одному, есть ли причина, по которым мы должны добавить salesperson_id в группу по заявке здесь? Кроме того, если отношение name и salesperson_id только один к одному, не будет ли учитываться (salesperson_id) всегда 1, если мы группируем по salesperson_id, name?
Я был немного смущен этим, и мне было интересно, сталкивался ли кто-нибудь с этой проблемой раньше и находил ли это также странным.