Загальні табличні вирази SQL для користувачів LuckyTemplates

У цьому блозі ми обговоримо деякі поширені табличні вирази, також відомі як CTE . Якщо ви зіткнулися зі складними проблемами, їх використання може допомогти вам.

За допомогою CTE ви можете розбити будь-яке завдання на невеликі та керовані запити для вирішення складних проблем.

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

Зміст

Синтаксис для створення загальних табличних виразів SQL 

Спочатку вам потрібно ввести « WITH », за яким слідує назва виразу CTE , після чого « AS ».

Загальні табличні вирази SQL для користувачів LuckyTemplates

Після цього ви можете вказати будь-які запити в дужках. Це буде збережено в наданому імені виразу, який працюватиме як віртуальна таблиця.

Загальні табличні вирази SQL для користувачів LuckyTemplates

Потім додайте aза допомогою віртуальної таблиці, яку ви створили за допомогою назви виразу, яку ви встановили.

Загальні табличні вирази SQL для користувачів LuckyTemplates

У нашому прикладі ми використаємо « USACusts » для назви Expression .

Загальні табличні вирази SQL для користувачів LuckyTemplates

І для запиту ми використаємо цей код. 

Загальні табличні вирази SQL для користувачів LuckyTemplates

Цей запит створить віртуальну таблицю. Там відображатиметься загальна чи зведена сума, згрупована за ідентифікатором клієнта, де країна, до якої вони належать, є « США ». Дані буде витягнуто з таблиці Sales.Customers .

Буде видно два стовпці, які є custid і Agg_Amount . Зверніть увагу, що таблиця USACusts не є фізичною , а лише віртуальною. Це означає, що його не буде видно в нашій базі даних.

Після запиту ми можемо додати a

Загальні табличні вирази SQL для користувачів LuckyTemplates

Цей оператор вибере всі Agg_Amount , які перевищують 1000, із таблиці USACusts .

Кілька поширених табличних виразів SQL 

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

Загальні табличні вирази SQL для користувачів LuckyTemplates

Для цього прикладу ми маємо перший CTE , який є C1 . Звідти ми вибрали YEAR(orderdate) і створили 2 стовпці, які є orderyear і custid з таблиці Sales.Orders .

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

Після цього ми вибрали orderyear і numcusts з C2 . Потім ми додали умову WHERE , щоб вибрати лише кількість клієнтів, яка перевищує 500 .

Підсумовуючи, цей код використовується для вибору клієнтів, у яких рік замовлення перевищує 2015 , і вибирає лише кількість клієнтів, які перевищують 500 на основі умови року замовлення .

Використання кількох КТР для вирішення складних кодів

Далі я продемонструю більше прикладів, щоб ще більше підкреслити використання 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 Statement

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

У цьому випадку ми використаємо інструкцію CASE , яка створить стовпець «Категорія продукту» з результатами, які базуються на сукупній сумі orderqty з C2 .

Загальні табличні вирази SQL для користувачів LuckyTemplates

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

У наступному прикладі ми створимо загальну суму на основі тієї, яку ми створили в попередньому прикладі. Але для цього ми розмістимо оператор CASE для категорії продукту в третій CTE , який є C3 .

Загальні табличні вирази SQL для користувачів LuckyTemplates

Перш ніж продовжити, давайте перевіримо результат C3 , додавши « SELECT * FROM C3 » під C3 .

Загальні табличні вирази SQL для користувачів LuckyTemplates

У C3 ми можемо побачити стовпці ProductName , Color , orderqty і Product Category . Звідси ми можемо почати агрегування на основі категорії продукту . Давайте зробимо це за допомогою наступної команди під C3 .

Загальні табличні вирази SQL для користувачів LuckyTemplates

Наведений нижче приклад є результатом створення сукупної суми за допомогою наведеної вище команди.

Загальні табличні вирази SQL для користувачів LuckyTemplates

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

На цьому етапі ви бачите, що ми можемо робити все, що завгодно, за допомогою CTE , щоб ефективніше працювати з нашими кодами.



Висновок

У цьому підручнику ви навчилися правильному синтаксису створення загальних табличних виразів SQL і вивчили, як використовувати кілька CTE для усунення несправностей складних кодів шляхом ізоляції невеликих частин даних і збереження їх у певному CTE .

Вивчивши це, ви тепер маєте можливість ефективніше налагоджувати свої коди. Пам’ятайте, що ви можете використовувати будь-яке ім’я для CTE , і ви не можете використовувати або називати будь-яке CTE , якщо його не створено. Ознайомившись із CTE , ви можете вважати себе проміжним користувачем.

Якщо ви хочете дізнатися більше про цю тему та інший пов’язаний вміст, ви, звичайно, можете переглянути список відповідних посилань нижче.

Все найкраще,

Хафіз


Труба в R: підключення функцій за допомогою Dplyr

Труба в R: підключення функцій за допомогою Dplyr

У цьому підручнику ви дізнаєтесь, як об’єднати функції разом за допомогою оператора каналу dplyr мовою програмування R.

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX від LuckyTemplates дозволяє повернути рейтинг певного числа в кожному рядку таблиці, який є частиною списку чисел.

Вилучення тем і зображень LuckyTemplates із PBIX

Вилучення тем і зображень LuckyTemplates із PBIX

Дізнайтеся, як розібрати файл PBIX, щоб витягти теми та зображення LuckyTemplates із фону та використовувати їх для створення звіту!

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Python у LuckyTemplates: як встановити та налаштувати

Python у LuckyTemplates: як встановити та налаштувати

Дізнайтеся, як інсталювати мову програмування Python у LuckyTemplates і як використовувати її інструменти для написання кодів і відображення візуальних елементів.

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Дізнайтеся, як обчислювати динамічну маржу прибутку за допомогою LuckyTemplates і як ви можете отримати більше інформації, глибше досліджуючи результати.

Сортування стовпців таблиці дат у LuckyTemplates

Сортування стовпців таблиці дат у LuckyTemplates

Дізнайтеся, як правильно сортувати поля зі стовпців розширеної таблиці дат. Це хороша стратегія для складних полів.

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

У цій статті я поясню, як знайти найпопулярніші продукти для регіону за допомогою обчислень DAX у LuckyTemplates, включаючи функції TOPN і CALCULATE.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

Дізнайтеся, як використовувати вимірювання сміття для позначок низької потужності, які ви хочете ефективно включити у свою модель даних.