Рекомендуем, 2020

Выбор редакции

Разница между где и наличием предложения в SQL

Предложения WHERE и HAVING в основном используются в операторе SQL-запросов, что позволяет нам ограничить комбинацию в отношении результата с помощью определенного предиката. Основное различие между WHERE и HAVING заключается в том, что предложение WHERE определяет условия для выбора кортежей (строк) из отношений, включая условия соединения, если это необходимо. С другой стороны, предложение HAVING определяет условие для выбранных групп, а не для отдельных кортежей.

SQL расшифровывается как язык структурированных запросов ; это всеобъемлющий или декларативный язык баз данных, используемый для доступа к данным из баз данных.

Сравнительная таблица

Основа для сравненияГДЕHAVING
основнойРеализовано в строковых операциях.Реализовано в колонке операций.
Применительно кОдин рядОбобщенный ряд или группы.
Выборка данныхОн только выбирает конкретные данные из определенных строк в соответствии с условием.Сначала извлекаются полные данные, а затем разделяются в соответствии с условием.
Агрегатные функцииНе может появиться в предложении WHERE.Может появиться в предложении HAVING.
Используется сSELECT и другие операторы, такие как UPDATE, DELETE или любой из них.Не может использоваться без оператора SELECT.
Вести себя какФильтр предварительной очисткиПост-фильтр
ГРУППА ПОПриходит после ГДЕ.Приходит после ИМЕНИ.

Определение где оговорка

Предложение SQL WHERE используется для описания условия во время извлечения данных из одной таблицы или объединения нескольких таблиц. Он возвращает конкретное значение из таблицы, только если данное условие выполнено. Предложение WHERE используется для проникновения в записи и получения только необходимых записей.

SQL также реализует логические связки и, или нет, в предложении WHERE, которые также известны как логическое условие; условие должно быть истинным для получения кортежей. Операнды выражений логических связок включают операторы сравнения, такие как <, <=, >, > =, = и , Эти операторы сравнения сравнивают строки и арифметические выражения. Его можно использовать в операторе SELECT, а также в операторах UPDATE, DELETE .

Давайте возьмем пример. Таблица, представленная ниже и называемая таблицей « Sales », состоит из атрибутов « Product » и « Sales_amount ».

Следующий запрос должен быть написан для расчета Total_sales телефона и динамиков.

 SELECT Product, sum (Sales_amount) AS Total_sales FROM Sales WHERE Продукт в («Телефон», «Динамики») GROUP BY Product; 

Следующим выводом является результирующий вывод, где строки фильтруются первыми, строки телефона и динамика извлекаются, а затем выполняется функция агрегирования.

Определение наличия клаузулы

SQL предоставляет предложение HAVING, которое можно использовать вместе с предложением GROUP BY . Это предложение HAVING помогает получить значения для групп, которые удовлетворяют определенным условиям. Предложение WHERE может также использоваться вместе с предложением HAVING во время выбора, предложение WHERE фильтрует отдельную строку. Затем строки группируются, и агрегированные вычисления выполняются, в конце предложение HAVING фильтрует группы.

Он ведет себя так же, как и WHERE, когда ключевое слово GROUP BY не используется. Функции группы, такие как min, max, avg, sum и count, могут появляться только в двух предложениях: предложения SELECT и HAVING. Он обеспечивает условие для кортежей, соответствующих каждому значению в группе атрибутов. Единственный набор записей, который удовлетворяет условию, будет показан как результат.

Здесь также мы берем тот же пример, что и предложение WHERE, и рассматриваем ту же таблицу « Продажи ». Когда мы хотим рассчитать Total_sales телефона и динамиков, используя предложение HAVING, мы напишем следующий запрос.

 ВЫБЕРИТЕ Продукт, сумма (Sales_amount) AS Total_sales ОТ ПРОДАЖИ ГРУППА ПО ПРОДУКТУ ХАРАКТЕРИСТИКА Продукт в («телефон», «динамики»); 

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

Когда мы хотим найти только те продукты, где Total_sales больше 1000. Запрос можно записать так:

 ВЫБЕРИТЕ Продукт, сумма (Sales_amount) AS Total_sales ОТ ПРОДАЖИ ГРУППА ПО ПРОДУКТУ, ИМЕЮЩАЯ сумму (Sales_amount)> 1000; 

Полученная продукция:

Это не может быть выполнено с использованием предложения WHERE, несмотря на HAVING, и оно генерирует сообщение об ошибке, поскольку предложение WHERE не может использоваться с агрегатными функциями.

Ключевые различия между тем, где и с оговоркой

  1. Предложение WHERE используется в операциях со строками и применяется к одной строке, тогда как предложение HAVING используется в операциях со столбцами и может применяться к суммированным строкам или группам.
  2. В предложении WHERE нужные данные выбираются в соответствии с примененным условием. Напротив, предложение HAVING извлекает целые данные, а затем выполняется разделение в соответствии с условием.
  3. Агрегатные функции, такие как min, sum, max, avg, никогда не могут появляться вместе с предложением WHERE. В отличие от этих функций могут появиться в предложении HAVING.
  4. Предложение HAVING нельзя использовать без оператора SELECT. И наоборот, ГДЕ можно использовать с SELECT, UPDATE, DELETE и т. Д.
  5. Предложение WHERE действует как предварительный фильтр, а предложение HAVING действует как постфильтр.
  6. Предложение WHERE при использовании с GROUP BY ставится перед GROUP BY. Это означает, что WHERE фильтрует строки перед выполнением агрегатных вычислений. С другой стороны, HAVING следует после GROUP BY, что означает, что он фильтруется после выполнения агрегатных вычислений.

Заключение

Предложение WHERE и HAVING работает таким же образом, за исключением дополнительной функции, которая популярна для предложения HAVING. Предложение HAVING может эффективно работать с агрегатными функциями, тогда как WHERE не может работать с агрегатными функциями.

Top