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


Работа со столбцами в агрегатных запросах (визуальные инструменты для баз данных)

Область применения: SQL Server

Конструктор запросов и представлений делает некоторые предположения для создания правильного статистического запроса. Например, если при создании статистического запроса помечается столбец данных для вывода, конструктор запросов и представлений автоматически включает этот столбец в предложение 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.

См. также

Резюмирование результатов запросов (визуальные инструменты для баз данных)
Результаты запросов сортировки и группирования (визуальные инструменты для баз данных)