Поделиться через


Работа со столбцами в итоговых запросах

Средства конструктора запросов и представлений делает некоторые предположения для создания правильного запроса. Например, если при создании итогового запроса помечается столбец данных для вывода, конструктор запросов и представлений автоматически включает этот столбец в предложение GROUP BY, чтобы в итоговых результатах случайно не было отображено содержимое отдельной строки.

Использование параметра "Группировать по"

При работе со столбцами в конструкторе запросов и представлений применяются следующие правила:

  • При выборе параметра "Группировать по" или добавлении агрегатной функции в запрос все столбцы, помеченные для вывода или используемые для сортировки, автоматически добавляются в предложение GROUP BY. Столбцы не добавляются автоматически в предложение GROUP BY, если они уже являются частью агрегатной функции.

    Если нужно, чтобы определенный столбец не входил в предложение GROUP BY, необходимо вручную изменить его, выбрав другой параметр в столбце "Группировать по" в области критериев. Тем не менее, конструктор запросов и представлений позволяет выбрать параметр, который сделает невозможным выполнение запроса.

  • Если выходной столбец запроса добавлен в агрегатную функцию вручную в области критериев или SQL, конструктор запросов и представлений не удалит автоматически другие выходные столбцы из запроса. Поэтому нужно удалить оставшиеся столбцы из выходных столбцов запроса либо включить их в предложение GROUP BY или агрегатную функцию.

При вводе условия поиска в столбец "Фильтр" области критериев в конструкторе запросов и представлений применяются следующие правила:

  • Если столбец Группировать сетки не отображен (так как итоговый запрос еще не указан), условие поиска помещается в предложение WHERE.

  • Если итоговый запрос уже задан и выбран параметр Где столбца Группировать, условие поиска помещается в предложение 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.

См. также

Другие ресурсы

Сводка по результатам запроса

Сортировка и группировка результатов запроса