Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применимо к: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
предложения.