¿Por qué no puede mezclar valores agregados y valores no agregados en un solo SELECT?

Sé que si tiene una función agregada en una instrucción SELECT, todos los demás valores en la declaración deben ser funciones agregadas o enumeradas en una cláusula GROUP BY. No entiendopor qu ese es el caso.

Si lo hago

SELECT Name, 'Jones' AS Surname FROM People

Yo obtengo

NAME    SURNAME
Dave    Jones
Susan   Jones
Amy     Jones

Entonces, el DBMS ha tomado un valor de cada fila y le ha agregado un valor único en el conjunto de resultados. Esta bien. Pero si eso funciona, ¿por qué no puedo hacer:

SELECT Name, COUNT(Name) AS Surname FROM People

Parece la misma idea, tome un valor de cada fila y agregue un solo valor. Pero en lugar de:

NAME    SURNAME
Dave    3
Susan   3
Amy     3    

Yo obtengo

ntentó ejecutar una consulta que no incluye la expresión especificada 'ContactName' como parte de una función agregada.

Sé que no está permitido, pero las dos circunstancias parecen tan similares que no entiendo por qué. ¿Es para hacer que el DBMS sea más fácil de implementar? Si alguien puede explicarme por qué no funciona como creo que debería, estaría muy agradecido.

Respuestas a la pregunta(6)

Su respuesta a la pregunta