Общие табличные выражения SQL для пользователей LuckyTemplates

В этом блоге мы обсудим некоторые распространенные табличные выражения, также известные как CTE . Если вы столкнулись со сложными проблемами, вам может помочь использование этих табличных выражений SQL .

С помощью CTE вы можете разбить любую задачу на небольшие и управляемые запросы для решения сложных проблем.

Теперь давайте рассмотрим, как CTE может сделать вашу работу более эффективной при устранении неполадок в коде.

Оглавление

Синтаксис для создания общих табличных выражений SQL 

Во-первых, вы должны ввести « WITH », затем имя вашего CTE Expression , а затем « AS ».

Общие табличные выражения SQL для пользователей LuckyTemplates

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

Общие табличные выражения SQL для пользователей LuckyTemplates

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

Общие табличные выражения SQL для пользователей LuckyTemplates

В нашем примере мы будем использовать « USACusts » в качестве имени выражения .

Общие табличные выражения SQL для пользователей LuckyTemplates

И для запроса мы будем использовать этот код. 

Общие табличные выражения SQL для пользователей LuckyTemplates

Этот запрос создаст виртуальную таблицу. Он покажет общую или совокупную сумму, сгруппированную по идентификатору клиента, где страна, к которой он принадлежит, — « США ». Данные будут извлечены из таблицы Sales.Customers .

Будут видны два столбца: custid и Agg_Amount . Обратите внимание, что таблица USACusts — это не физическая таблица , а только виртуальная таблица. Это означает, что он не будет виден в нашей базе данных.

После запроса мы можем добавить оператор SELECT .

Общие табличные выражения SQL для пользователей LuckyTemplates

Этот оператор выберет все значения Agg_Amount , превышающие 1000, из таблицы USACusts .

Несколько общих табличных выражений SQL 

Несколько CTE могут помочь вам устранить сложные ошибки в вашем коде, разбив их на более мелкие фрагменты. Кроме того, вы можете определить столько CTE , сколько хотите. Ниже приведен пример нескольких CTE .

Общие табличные выражения SQL для пользователей LuckyTemplates

В этом примере у нас есть первый CTEC1 . Оттуда мы выбрали YEAR(orderdate) и создали 2 столбца: orderyear и custid из таблицы Sales.Orders .

Для второго CTE с именем C2 мы выбрали orderyear и собрали номер custid с помощью команды COUNT . Затем мы назвали его numcusts from C1 . Условие WHERE также было добавлено в C2 , чтобы выбрать только год заказа , который больше 2015 . Затем мы сгруппировали их по порядку года .

После этого мы выбрали orderyear и numcusts из C2 . Затем мы добавили условие WHERE , чтобы выбрать только количество клиентов, превышающее 500 .

Подводя итог, можно сказать, что этот код используется для выбора клиентов, у которых год заказа превышает 2015 , и выбора только количества клиентов, превышающих 500 , на основе условия года заказа .

Использование нескольких CTE для решения сложных кодов

Далее я продемонстрирую дополнительные примеры, чтобы еще больше подчеркнуть использование CTE при устранении неполадок с большим набором данных. Вот еще один пример нескольких CTE .

Общие табличные выражения SQL для пользователей LuckyTemplates

Обратите внимание, что вы можете называть CTE так, как хотите, но в этом блоге мы используем C1 , C2 , C3 и т. д., чтобы легко определить и понять, как мы их используем в наших примерах.

Возвращаясь к примеру, мы создали C1 , чтобы выбирать только те продажи, для которых количество заказов больше 5 , из таблицы Sales.SalesOrderDetails .

Общие табличные выражения SQL для пользователей LuckyTemplates

Затем в C2 мы использовали данные, которые мы сохранили в C1 , чтобы присоединиться к продукту на основе Product.ID и сгруппировать их по названию продукта (p.Name) и цвету продукта (p.Color) .

Поскольку мы объявили условие в C1 , мы сгруппируем название продукта и цвет продукта в C2 только для заказов, в которых количество заказа (OrderQty) больше 5 .

Общие табличные выражения SQL для пользователей LuckyTemplates

После этого мы будем использовать команду для выбора всех данных из C2 с количеством заказа, превышающим 1000 .

В целях устранения неполадок вы можете просто выбрать каждое из созданных вами CTE , чтобы проверить, показывает ли оно правильные данные. См. приведенные ниже примеры.

Общие табличные выражения SQL для пользователей LuckyTemplates

Для C1 отображаются все данные из таблицы Sales.SalesOrderDetail с количеством заказа больше 5 .

Общие табличные выражения SQL для пользователей LuckyTemplates

Затем C2 показывает вывод количества заказа, сгруппированного по названию продукта и цвету из C1 . В C2 мы можем видеть столбец orderqty , но на самом деле его нет в C2 , потому что это просто вычисляемый столбец, который мы создали из C1 . Отсюда мы можем начать использовать любое условие в столбце orderqty и выполнить устранение неполадок.

Итак, теперь вы видите, как несколько CTE могут помочь нам в устранении ошибок в сложных кодах, сохраняя их в CTE , и приступать к устранению неполадок, не повреждая фактический код.

Использование CTE с оператором Case

Давайте рассмотрим еще один пример в том же контексте, чтобы показать, как мы можем использовать несколько CTE для устранения неполадок в сложных кодах. 

В этом случае мы собираемся использовать оператор CASE , который создаст столбец Product Category с результатами, основанными на агрегированном количестве orderqty из C2 .

Общие табличные выражения SQL для пользователей LuckyTemplates

Как упоминалось ранее, у нас не было orderqty в первом CTE , а также в категории продуктов , но мы использовали промежуточные таблицы для расчета и выполнения различных расчетов.

В следующем примере мы создадим агрегированную сумму на основе категории продуктов , которую мы создали в предыдущем примере. Но для этого мы поместим оператор CASE для категории продукта в третье CTEC3 .

Общие табличные выражения SQL для пользователей LuckyTemplates

Прежде чем продолжить, давайте проверим вывод C3 , добавив « SELECT * FROM C3 » ниже C3 .

Общие табличные выражения SQL для пользователей LuckyTemplates

В C3 мы видим столбцы ProductName , Color , orderqty и Product Category . Отсюда мы можем начать агрегирование на основе категории продукта . Давайте сделаем это, используя следующую команду ниже C3 .

Общие табличные выражения SQL для пользователей LuckyTemplates

В приведенном ниже примере показан результат после создания агрегированной суммы с помощью приведенной выше команды.

Общие табличные выражения SQL для пользователей LuckyTemplates

Изначально у нас не было столбцов Product Category и orderqty , но мы можем генерировать примеры выходных данных на основе этих столбцов, используя несколько CTE .

На данный момент вы можете видеть, что мы можем делать что угодно с помощью CTE для более эффективной работы с нашими кодами.

Временные таблицы и представления SQL для пользовательского фильтра LuckyTemplates
в SQL с использованием IN, NOT IN, LIKE и NOT LIKE
Извлечение данных SQL с использованием OFFSET и FETCH

Заключение

В этом руководстве вы изучили правильный синтаксис при создании общих табличных выражений SQL и как использовать несколько CTE для устранения неполадок в сложных кодах, изолируя небольшие части данных и сохраняя их внутри данного CTE .

Изучив это, вы теперь сможете более эффективно отлаживать свои коды. Помните, что вы можете использовать любое имя для CTE , и вы не можете использовать или вызывать любое CTE , если оно не создано. Как только вы познакомитесь с CTE , вы сможете считать себя пользователем SQL среднего уровня .

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

Всего наилучшего,

Хафиз

Leave a Comment

Расчет недельных продаж с помощью DAX в LuckyTemplates

Расчет недельных продаж с помощью DAX в LuckyTemplates

В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.