Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
применимо к:SQL Server
При создании статистических запросов инструменты конструктора запросов и представлений (визуальные инструменты базы данных) делают определенные предположения, чтобы он смог создать допустимый запрос. Например, если вы создаете итоговый запрос и выбираете столбец данных для вывода, конструктор запросов автоматически включает столбец в оператор GROUP BY, чтобы случайно не попытаться отобразить содержимое отдельной строки сводным образом.
Использование группы по
Конструктор запросов и представлений использует следующие рекомендации по работе со столбцами:
При выборе параметра Group By или добавлении статистической функции в запрос все столбцы, помеченные для выходных данных или используемых для сортировки, автоматически добавляются в
GROUP BYпредложение. Столбцы не добавляются в предложениеGROUP BYавтоматически, если они уже являются частью агрегатной функции.Если вы не хотите, чтобы конкретный столбец был частью
GROUP BYусловия, его необходимо изменить вручную, выбрав другой параметр в столбце "Группировка по" панели критериев. Однако конструктор запросов и представлений не препятствует выбору параметра, который может привести к созданию запроса, который не выполняется.Если вы вручную добавите выходной столбец запроса в агрегатную функцию в области "Критерии" или "SQL", конструктор запросов и представлений автоматически не удаляет другие выходные столбцы из запроса. Поэтому необходимо удалить оставшиеся столбцы из выходных данных запроса или сделать их частью
GROUP BYпредложения или агрегатной функции.
При вводе условия поиска в столбец "Фильтр" области условий конструктор запросов и представлений следует следующим правилам:
Если столбец Group By сетки не отображается (так как вы еще не указали агрегатный запрос), условие поиска помещается в
WHEREпредложение.Если вы уже находитесь в статистическом запросе и выбрали параметр Where в столбце Group By , условие поиска помещается в
WHEREпредложение.Если столбец Group By содержит любое значение, отличное от Where, условие поиска помещается в
HAVINGпредложение.
Использование предложений HAVING и WHERE
В следующих принципах описывается, как ссылаться на столбцы в агрегатном запросе в условиях поиска. Как правило, можно использовать столбец в условии поиска для фильтрации строк, которые должны быть суммированы ( WHERE предложение) или определить, какие сгруппированные результаты отображаются в окончательных выходных данных ( HAVING предложение).
Отдельные столбцы данных могут отображаться в предложении
WHEREилиHAVINGв зависимости от того, как они используются в другом месте запроса.WHEREпредложения используются для выбора подмножества строк для суммирования и группировки и, таким образом, применяются перед выполнением любой группировки. Таким образом, столбец данных можно использовать вWHEREпредложении, даже если он не является частьюGROUP BYпредложения или содержится в агрегатной функции. Например, следующий запрос выбирает все названия, которые стоят более $10,00, и вычисляет среднюю цену.SELECT AVG(price) FROM titles WHERE price > 10;Если вы создаете условие поиска, включающее столбец, который также используется в
GROUP BYпредложении или агрегатной функции, условие поиска может отображаться какWHEREпредложение илиHAVINGпредложение . Вы можете решить, какой при создании условия. Например, следующая инструкция создает среднюю цену для названий каждого издателя, затем показывает среднее значение для тех издателей, у которых средняя цена превышает 10,00 долларов:SELECT pub_id, AVG(price) FROM titles GROUP BY pub_id HAVING (AVG(price) > 10);Если вы используете агрегатную функцию в условии поиска, условие включает сводку и поэтому должно быть частью
HAVINGпредложения.