Я знаю, что если у вас есть одна агрегированная функция в инструкции SELECT, то все остальные значения в инструкции должны быть либо агрегатными функциями, либо перечислены в предложении GROUP BY. Я не понимаю, почему это дело.
Если я это сделаю:
SELECT Name, 'Jones' AS Surname FROM People
Я получаю:
NAME SURNAME
Dave Jones
Susan Jones
Amy Jones
Итак, СУБД взяла значение из каждой строки и добавила к нему единственное значение в наборе результатов. Это здорово. Но если это работает, почему я не могу:
SELECT Name, COUNT(Name) AS Surname FROM People
Похоже на ту же идею, взять значение из каждой строки и добавить одно значение. Но вместо:
NAME SURNAME
Dave 3
Susan 3
Amy 3
Я получаю:
Вы попытались выполнить запрос, который не включает указанное выражение "ContactName" как часть агрегатной функции.
Я знаю, что это не разрешено, но два обстоятельства кажутся настолько похожими, что я не понимаю, почему. Это сделать СУБД более простой в реализации? Если кто-нибудь может объяснить мне, почему это не работает, как я думаю, должно быть, я был бы очень благодарен.