Por que você não pode misturar valores agregados e não agregados em um único SELECT?

Sei que se você tiver uma função agregada em uma instrução SELECT, todos os outros valores na instrução devem ser funções agregadas ou listados em uma cláusula GROUP BY. Eu não entendoporqu esse é o caso.

Se eu fizer

SELECT Name, 'Jones' AS Surname FROM People

Eu recebo

NAME    SURNAME
Dave    Jones
Susan   Jones
Amy     Jones

Então, o DBMS pegou um valor de cada linha e anexou um único valor a ele no conjunto de resultados. Isso é bom. Mas se isso funcionar, por que não posso fazer:

SELECT Name, COUNT(Name) AS Surname FROM People

Parece a mesma idéia, pegue um valor de cada linha e adicione um único valor. Mas em vez de:

NAME    SURNAME
Dave    3
Susan   3
Amy     3    

Eu recebo

Você tentou executar uma consulta que não inclui a expressão especificada 'ContactName' como parte de uma função agregad

Sei que não é permitido, mas as duas circunstâncias parecem tão semelhantes que não entendo o porquê. É para facilitar a implementação do DBMS? Se alguém puder me explicar por que não funciona como acho que deveria, ficaria muito grat

questionAnswers(6)

yourAnswerToTheQuestion