2017-02-02 9 views
0

Скажем, у меня есть таблицаВыполняет ли групповой процесс, требуя агрегатной функции для команды выбора?

InspectLog (идентификатор пользователя, attr1, attr2)

Я хочу знать идентификатор пользователя из пользователей, проверяемых более чем в 5 раз.

Вот что я понял, до сих пор:

SELECT I.userid 
FROM InspectLog I 
GROUP BY I.userid 
HAVING Count(*) >5; 

Мой вопрос, как я видел много примеров там, когда having используется они также называют Count() в избранной инструкции, как так ,

SELECT I.userid, Count(*) AS c 
FROM InspectLog I 
GROUP BY I.userid 
HAVING Count(*)>5; 

Требуется ли having использовать агрегатную функцию в начале в избранной инструкции? Будет ли выход тем же. Из того, что я получаю, выход будет отличаться наличием дополнительного c-столбца в этом случае. Но будет ли граф() работать с HAVING без первого?

+2

Нет, вам не нужно выбирать счетчик(). Но почему вы спрашиваете нас, почему бы не попытаться выяснить, что произойдет? – jarlh

+0

Если вас интересует точный номер, вы проецируете счет, иначе нет. Это похоже на WHERE, вам не нужно проецировать столбец, используемый в WHERE. – dnoeth

ответ

1

Короткий ответ: Нет, вам не нужно добавлять «Count()» в поле «Выбор».

В результате будет добавлен дополнительный столбец.