Что такое self в Python: примеры из реального мира
Что такое self в Python: примеры из реального мира
В этом руководстве мы обсудим несколько способов использования или выполнения предложения HAVING в агрегатных функциях SQL . Использование этого предложения в агрегатных функциях SQL может значительно помочь в суммировании данных.
Предложение HAVING почти похоже на оператор WHERE и может выполняться вместе с ним.
Мы обсудим их корреляции и различия, предоставив примеры по мере прохождения этого руководства.
Оглавление
Операторы GROUP BY и WHERE в SQL
В нашем первом примере мы обсудим, как выполнить предложение WHERE и GROUP BY , используя образец таблицы ниже. Обратите внимание, что мы можем использовать предложение WHERE только с существующими столбцами, а не только в агрегатных функциях.
Допустим, мы хотим получить общий объем продаж продукта на основе его столбца SaleAmount , где значение больше 2 . Чтобы получить результат, наша команда должна быть следующей:
Сначала мы выбираем ProductName и агрегируем SaleAmount , чтобы получить TotalSales.
Затем мы использовали оператор WHERE здесь, поскольку мы пытаемся получить только те продукты, для которых SaleAmount больше 2. Команда « ГРУППИРОВАТЬ ПО ProductName» указывает, что она сгруппирует строки в столбце ProductName в одну.
Выполнив наш набор команд , мы увидим, что из всех данных в столбцах ProductName и SaleAmount отображались только Bulb и Fan . Это потому, что они были единственными, у которых значение SaleAmount было больше 2.
В этом примере оператор WHERE предназначен для фильтрации результатов с помощью существующего столбца, которым является наша сумма продажи . Также обратите внимание, что оператор WHERE появляется перед GROUP BY и не может использоваться для фильтрации агрегатных функций. С другой стороны, предложение HAVING появляется после GROUP BY и используется для фильтрации на основе агрегатной функции.
Предложение GROUP BY и HAVING в SQL
В этом примере мы собираемся продемонстрировать разницу между оператором WHERE и предложением HAVING . Мы будем использовать ту же цель, что и в предыдущем примере, чтобы мы могли сравнить и оценить результаты.
Давайте сначала отобразим продукты с их общим объемом продаж, используя приведенную ниже команду. Как видите, наша первая команда все еще такая же, как наша первая команда, выполняющая оператор WHERE .
Если мы выполним наши первые две команды, мы получим следующий результат:
Теперь предположим, что мы хотим отображать только продукты, общая сумма продаж которых превышает 5. Мы не можем использовать оператор WHERE , поскольку его можно использовать только с существующими столбцами. Поэтому нам нужно использовать предложение HAVING , так как мы будем фильтровать из агрегатной функции.
Обратите внимание, как мы используем предложение HAVING после GROUP BY , в отличие от оператора WHERE , используемого перед GROUP BY. Это связано с тем, что SQL группирует записи до того, как он оценит условие HAVING .
Давайте затем выполним эти команды вместе с HAVING SUM(SaleAmount)>5 . Указав, что мы хотим получить только те продукты, общая цена которых больше 5, мы заметим, что в нашей текущей таблице результатов мы больше не увидим Pen . Это потому, что его сумма меньше 5 .
Короче говоря, когда мы хотим отфильтровать данные из нашей таблицы на основе существующего столбца, мы используем предложение WHERE , а когда мы хотим отфильтровать данные из агрегатной функции, мы используем предложение HAVING .
Предложение HAVING And WHERE в SQL Server Management Studio (SSMS)
Теперь мы перейдем к обсуждению и демонстрации того, как мы можем выполнить предложение HAVING в SQL Server Management Studio (SSMS). Мы также рассмотрим разницу между предложением HAVING и предложением WHERE , предоставив примеры.
Ниже показан пример данных SalesOrderHeader. Эти данные состоят из 100 строк. В нашем примере мы хотим получить TotalSale по CustomerID , где TotalSale больше 10000 . Обратите внимание, что общая сумма продаж основана на сумме значений столбца TotalDue .
Во-первых, позвольте мне продемонстрировать, почему мы не можем использовать предложение WHERE , когда хотим отфильтровать агрегатную функцию на основе нашего примера выше.
Мы будем использовать примерный набор команд с изображения ниже. Как видите, технически у нас тот же набор команд, что и в самом первом примере.
Однако, когда мы нажимаем «Выполнить» в верхнем левом углу, это приводит к ошибке, потому что мы не можем использовать только предложение WHERE при фильтрации агрегатной функции.
Чтобы исправить ошибку, нам нужно отфильтровать результат, используя предложение HAVING вместо предложения WHERE . Наш новый набор команд должен быть похож на изображение ниже.
Теперь мы видим, что наша ошибка исправлена и содержит результаты для каждого CustomerID с TotalSale больше 10000 .
Опять же, предложение WHERE всегда используется перед предложением GROUP BY , а предложение HAVING всегда используется после предложения GROUP BY .
Использование как предложения HAVING, так и предложения WHERE в SQL
В этом примере предположим, что мы хотим использовать предложения WHERE и HAVING одновременно. Давайте попробуем получить TotalSale по CustomerID , где TotalSale больше 10000 , но только с клиентами, у которых их TerritoryID равен 1 .
Поскольку мы хотим отфильтровать результаты для клиентов, у которых TerritoryID равен 1 , мы будем использовать предложение WHERE. Итак, наша команда должна быть такой же, как и предыдущая. Опять же, мы добавили предложение WHERE перед предложением GROUP BY.
На данный момент мы не видим большой разницы между нашим предыдущим результатом и этим новым. Однако, если вы внимательно посмотрите на нижний правый угол, у нас теперь только 64 строки по сравнению с предыдущей строкой с 505 строками данных. Это связано с тем, что результаты также фильтруются на основе их TerritoryID .
Заключение
Подводя итог, мы можем использовать предложение WHERE только с существующими столбцами. Если нам нужно фильтровать с помощью агрегированных функций, вместо этого нам нужно использовать предложение HAVING .
Использование предложения HAVING в агрегатных функциях SQL и отработка способов совместного выполнения предложений HAVING и WHERE может обеспечить пользователям удобство при работе с большим количеством данных или записей.
Надеюсь, я предоставил вам достаточно информации и понимания того, как использовать предложение HAVING в агрегатных функциях SQL. Если вы хотите узнать больше об этой теме и другом связанном контенте, вы, безусловно, можете просмотреть список соответствующих ссылок ниже.
Всего наилучшего,
Хафиз
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.
Что такое шлюз LuckyTemplates? Все, что тебе нужно знать