Зображення автора
У світі даних SQL все ще залишається лінгва франка для взаємодії з базами даних.
Сьогодні вона залишається однією з найбільш використовуваних мов для роботи з даними, і все ще вважається обов’язковою для будь-якого хорошого спеціаліста з обробки даних.
Проте будь-хто, хто працював зі складними SQL-запитами, знає, що вони можуть швидко перетворитися на неповоротких звірів, яких важко читати, підтримувати чи повторно використовувати.
Ось чому сьогодні недостатньо знати SQL, нам потрібно вміти створювати запити. І це, власне, вид мистецтва.
Саме тут вступають у дію загальні табличні вирази (CTE), які перетворюють мистецтво написання запитів на більш структуроване та доступне ремесло.
Тож давайте разом дізнаємося, як кодувати читабельні та повторно використовувані запити.
Якщо вам цікаво, що таке CTE, ви обрали правильну статтю.
Загальний табличний вираз (CTE) — це тимчасовий набір результатів, визначений у межах виконання окремого оператора SQL.
Це тимчасові таблиці, на які можна посилатися багато разів в межах одного запиту, і зазвичай вони використовуються для спрощення складних об’єднань і підзапитів з кінцевою метою підвищення читабельності та організації коду SQL.
Тому вони є потужним інструментом для розбиття складних запитів на простіші частини.
Ось чому вам варто розглянути можливість використання CTE:
- Модульність: Ви можете розбити складну логіку на зрозумілі частини.
- читаність: Це полегшує розуміння потоку запитів SQL.
- Багаторазовість: На CTE можна посилатися кілька разів в одному запиті, уникаючи повторення.
Магія починається з пропозиції WITH, яка передує вашому основному запиту та визначає різні часові таблиці (CTE) з псевдонімами.
Тому нам завжди потрібно починати запит із команди «WITH», щоб почати визначення власних CTE. Використовуючи CTE, ми можемо розбити будь-який складний SQL-запит на:
– Невеликі часові таблиці, які обчислюють пов’язані змінні.
– Підсумкова таблиця, яка приймає лише ті змінні, які нам потрібні як вихідні дані.
І це саме той МОДУЛЬНИЙ підхід, який ми хочемо в будь-якому коді!
Зображення автора
Отже, використання CTE у наших запитах дозволяє нам:
– Виконайте часову таблицю ОДИН РАЗ і посилайтеся на неї КІЛЬКА разів.
– Покращте читабельність і спростіть складну логіку.
– Сприяти повторному використанню коду та модульному дизайну.
Щоб краще зрозуміти це, ми можемо взяти практичний приклад оголошень Airbnb у Барселоні.
Уявіть, що ми хочемо проаналізувати ефективність списків за околицями та порівняти їх із загальною ефективністю міста. Вам потрібно буде зібрати разом інформацію про райони, окремі квартири, господарів і ціни.
Щоб проілюструвати це, ми будемо використовувати InsideAirbnb таблиця Барселони, яка виглядає наступним чином:
Наївний підхід може призвести до створення вкладених підзапитів, які швидко стануть кошмаром для обслуговування, подібним до наступного:
Код за автором
Замість цього ми можемо використовувати CTE, щоб розділити наш запит на логічні розділи, кожен з яких визначає частину головоломки.
- Дані околиць: Створіть CTE, щоб узагальнити дані за околицями.
- Інформація про квартиру та господаря: Визначте CTE для детальної інформації про квартири та господарів.
- Загальноміські показники: Інший CTE для збору статистики на рівні міста для порівняння.
- Фінальна збірка: Об’єднайте CTE в остаточному операторі SELECT, щоб представити дані зв’язано.
Зображення автора
І ми отримали б такий запит:
Код за автором
Використовуючи CTE, ми перетворюємо потенційно жахливий єдиний запит на організований набір модулів даних. Цей модульний підхід робить код SQL більш інтуїтивно зрозумілим і адаптованим до змін.
Якщо з’являться нові вимоги, ви можете налаштувати або додати CTE, не переглядаючи весь запит.
Після того, як ви встановили свої CTE, ви можете повторно використовувати їх для виконання порівняльного аналізу. Наприклад, якщо ви хочете порівняти дані околиць із загальноміськими показниками, ви можете посилатися на свої CTE у серії операцій JOIN.
Це не тільки економить час, але й забезпечує ефективність коду, оскільки вам не доведеться повторювати один і той самий запит двічі!
CTE є свідченням принципу, що невелика структура має велике значення в програмуванні. Використовуючи CTE, ви можете писати чіткіші, зручніші та багаторазово використовувані запити SQL.
Це спрощує процес розробки запитів і полегшує передачу складної логіки пошуку даних іншим.
Пам’ятайте, що наступного разу, коли ви збираєтеся почати писати монстр вкладеного підзапиту з кількома з’єднаннями, подумайте про те, щоб розбити його за допомогою CTE.
Ваше майбутнє — і будь-хто інший, хто може прочитати ваш код — буде вам вдячний.
Хосеп Феррер – інженер-аналітик із Барселони. Він закінчив інженер-фізику та зараз працює в галузі Data Science, що стосується людської мобільності. Він неповний робочий день створює контент, який зосереджується на науці даних і технологіях. Ви можете зв'язатися з ним на LinkedIn, Twitter or Medium.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://www.kdnuggets.com/sql-simplified-crafting-modular-and-understandable-queries-with-ctes?utm_source=rss&utm_medium=rss&utm_campaign=sql-simplified-crafting-modular-and-understandable-queries-with-ctes
- : має
- :є
- : ні
- :де
- $UP
- a
- МЕНЮ
- насправді
- додавати
- регулювати
- Прийняття
- проти
- Airbnb
- дозволяє
- Також
- завжди
- an
- аналіз
- аналітика
- аналізувати
- та
- Інший
- будь-який
- будь
- апартаменти
- прикладної
- підхід
- доступний
- ЕСТЬ
- Art
- стаття
- AS
- збірка
- At
- уникає
- Барселона
- BE
- ставати
- Краще
- Перерва
- Розрив
- але
- by
- CAN
- Зміни
- ясніше
- код
- об'єднувати
- Приходити
- загальний
- спілкуватися
- порівняти
- порівняння
- комплекс
- обчислення
- Вважати
- вважається
- контакт
- зміст
- виробити
- створювати
- творець
- В даний час
- дані
- наука про дані
- базами даних
- угода
- певний
- Визначає
- визначаючи
- дизайн
- деталі
- розробка
- різний
- відкрити
- вниз
- легше
- ефективний
- ще
- приступати
- з'являтися
- кінець
- інженер
- Машинобудування
- досить
- Весь
- встановлений
- приклад
- виконувати
- виконання
- вираз
- вирази
- поле
- остаточний
- знайти
- потік
- увагу
- після
- слідує
- для
- від
- майбутнє
- збирати
- мета
- йде
- добре
- Мати
- he
- його
- господар
- хостів
- Як
- How To
- HTTP
- HTTPS
- людина
- if
- удосконалювати
- in
- зростаючий
- індивідуальний
- інформація
- екземпляр
- взаємодіючих
- в
- інтуїтивний
- IT
- приєднатися
- з'єднання
- JPG
- KDnuggets
- Знати
- знає
- мови
- вести
- як
- оголошення
- трохи
- логіка
- логічний
- Довго
- ВИГЛЯДИ
- магія
- головний
- підтримувати
- Підлягає ремонту
- обслуговування
- РОБОТИ
- багато
- Метрика
- може бути
- мобільність
- модульний
- Модулі
- більше
- найбільш
- множинний
- Обов’язково
- Необхідність
- Нові
- наступний
- of
- on
- один раз
- ONE
- тільки
- операції
- or
- порядок
- організація
- Організований
- інші
- наші
- з
- вихід
- загальний
- власний
- частини
- виконувати
- продуктивність
- Фізика
- частина
- plato
- Інформація про дані Платона
- PlatoData
- Play
- потенційно
- потужний
- Практичний
- точно
- представити
- ціни без прихованих комісій
- принцип
- процес
- професійний
- Програмування
- сприяти
- головоломка
- запити
- швидко
- Читати
- посилання
- посилання на
- пов'язаний
- повторювати
- Вимога
- результат
- пошук
- багаторазовий
- знову використовувати
- право
- то ж
- наука
- Наука і технології
- сфера
- вибрати
- Серія
- комплект
- Повинен
- простий
- спрощений
- спростити
- один
- невеликий
- SQL
- стенди
- старт
- Заява
- статистика
- Як і раніше
- Спрощує
- структура
- структурований
- підсумовувати
- таблиця
- Приймати
- приймає
- Технологія
- тимчасовий
- заповіт
- дякувати
- Що
- Команда
- світ
- Їх
- вони
- це
- ті
- час
- times
- до
- сьогодні
- разом
- інструмент
- перетворення
- ПЕРЕГЛЯД
- тип
- типово
- кінцевий
- розуміти
- зрозуміло
- розуміння
- us
- використання
- використовуваний
- використання
- використовувати
- хотіти
- шлях..
- we
- Що
- Що таке
- який
- ВООЗ
- чому
- волі
- з
- в
- без
- цікаво
- працював
- робочий
- світ
- б
- запис
- лист
- ви
- вашу
- себе
- зефірнет