SQL
Ви будете використовувати базу даних publications.
publications (1).sql Завантажити публікації (1).sql
Створіть файл solutions.sql з усіма коментарями, необхідними для розуміння вашого коду.
Посилання на зовнішній сайт.Завдання 1 - Найприбутковіші автори
У цьому завданні ви дізнаєтеся, хто є трьома найприбутковішими авторами у базі даних publications. Пошагові інструкції допоможуть вам розвинути навички вирішення проблем.
Щоб розв’язати цю задачу, важливо врахувати наступне:
У таблиці
salesназва може з’являтися кілька разів. Роялті потрібно обчислювати для кожної продажу.Незважаючи на те, що у назви може бути кілька записів
sales, аванс потрібно обчислювати тільки один раз для кожної назви.У вашому остаточному рішенні потрібно підсумувати наступні прибутки для кожного окремого автора:
- Всі аванси, які обчислюються один раз для кожної назви.
- Всі роялті у кожній продажі.
Тому ви не зможете досягти цілі за допомогою одного SELECT запиту, потрібно використовувати підзапити. Вам потрібно виконати кілька кроків для досягнення рішення. Ось огляд кроків:
Обчислити роялті кожної продажі для кожного автора та аванс для кожного автора і публікації.
Використовуючи результат з кроку 1 як підзапит, агрегувати загальні роялті для кожної назви та автора.
Використовуючи результат з кроку 2 як підзапит, обчислити загальний прибуток кожного автора, підсумовуючи аванси та загальні роялті кожної назви.
Нижче ми проведемо вас через кожен крок. У вашому файлі solutions.sql включіть запити SELECT для кожного кроку, щоб ваш викладач міг переглянути процес вирішення задачі.
Крок 1: Обчислити роялті кожної продажі для кожного автора та аванс для кожної назви і автора
Напишіть SELECT запит для отримання наступного результату:
- ID назви
- ID автора
- Аванс кожної назви і автора
- Формула:
advance = titles.advance * titleauthor.royaltyper / 100
- Формула:
- Роялті кожної продажі
- Формула:
sales_royalty = titles.price * sales.qty * titles.royalty / 100 * titleauthor.royaltyper / 100
- Формула:
- Зверніть увагу, що
titles.royaltyтаtitleauthor.royaltyperділяться на 100 відповідно, оскільки вони є відсотковими числами, а не дробами.
У результаті цього кроку кожна назва може з’являтися кілька разів для кожного автора. Це пов’язано з тим, що у назви може бути кілька продажів.
Посилання на зовнішній сайт.Крок 2: Агрегувати загальні роялті для кожної назви та автора
Використовуючи результат з кроку 1, напишіть запит із підзапитом для отримання наступного:
- ID назви
- ID автора
- Агреговані роялті кожної назви для кожного автора
- Підказка: використовуйте SUM та групуйте за
au_idтаtitle_id
- Підказка: використовуйте SUM та групуйте за
У результаті цього кроку кожна назва має з’являтися лише один раз для кожного автора.
Посилання на зовнішній сайт.Крок 3: Обчислити загальний прибуток кожного автора
Тепер, коли кожна назва має рівно один рядок для кожного автора, де доступні аванс і роялті, ми готові отримати кінцевий результат. Використовуючи результат з кроку 2, напишіть запит із двома підзапитами для отримання наступного:
- ID автора
- Прибутки кожного автора, підсумовуючи аванси та загальні роялті кожної назви
Відсортуйте результат за загальним прибутком від найбільшого до найменшого та обмежте кількість рядків до 3.
Посилання на зовнішній сайт.Завдання 2 - Альтернативне рішення
У попередньому завданні ви розробили рішення наступним чином:
- Витягнуті таблиці (підзапити).(див. посилання на зовнішній сайт)
Ми пропонуємо вам спробувати інший спосіб:
- Створення тимчасових таблиць MySQL та запит до них у наступних кроках.
Включіть ваше альтернативне рішення у файл solutions.sql.
Посилання на зовнішній сайт.Додаткове навчання
У контексті цієї задачі ви можете використовувати або витягнуті таблиці, або тимчасові таблиці для розробки рішення. Перший спосіб здається більш зручним, але обидва мають свої переваги. Витягнуті таблиці зберігаються у пам’яті MySQL і зникають після завершення запиту. Тимчасові таблиці фізично зберігаються у MySQL і залишаються доступними, доки не закінчиться сесія. Якщо дані у базі часто оновлюються, використання витягнутих таблиць може призвести до різних результатів. Тоді як тимчасові таблиці зберігають дані до їх оновлення. Якщо важлива актуальність, використовуйте витягнуті таблиці. Якщо ж потрібно обробляти великі обсяги даних або складні запити, краще використовувати тимчасові таблиці для підвищення продуктивності.
Посилання на зовнішній сайт.Завдання 3
Покращуючи рішення з Завдання 1 та 2, створіть постійну таблицю з назвою most_profiting_authors, яка міститиме дані про найприбутковіших авторів. Таблиця повинна мати 2 стовпці:
au_id- ID автораprofits- прибутки автора, підсумовуючи аванси та роялті
Включіть ваше рішення у файл solutions.sql.
Посилання на зовнішній сайт.Додаткове навчання
Щоб збалансувати продуктивність транзакцій бази даних і актуальність даних, інженери часто налаштовують автоматичні скрипти для періодичного запиту даних і збереження результатів у постійних таблицях. Це дозволяє швидко отримувати потрібну інформацію, хоча вона може бути трохи застарілою. Якщо дані часто оновлюються, краще використовувати витягнуті таблиці для актуальності. Якщо ж потрібно обробляти великі обсяги даних або складні запити, краще використовувати тимчасові таблиці для підвищення швидкості.
Актуальні фриланс-проєкти в категорії Бази даних та SQL
Доопрацювання 1С УТ 11 для ТСД Zebra (RDP): різні звукові сигнали при скануванні
1000 UAH
Конфігурація: 1С УТ 11 Адресний склад ТСД Zebra TC26 Робота через RDP Сканування товарів виконується в документах приймання, розміщення, відбору та інших складських операціях. Поточна проблема: Комірники працюють через ТСД Zebra. При скануванні не завжди помічають повідомлення… C#, Бази даних та SQL ∙ 1 день 12 годин тому ∙ 6 ставок |
Вилікувати конфігурацію 1с
5000 UAH
Конфігурація CRM & ERP SmartCeiling (2.8.26.0) Захист через Реєстраційний Код . Зареєстрована до кінця року. Бази даних та SQL ∙ 2 дні 3 години тому ∙ 8 ставок |
Потрібен спеціаліст 1С для доопрацювань та розробкиШукаю фахівця з 1С для співпраці на фрілансі. Наразі вже працюю з підрядником, який забезпечує підтримку та обслуговування системи 1С. Проте через завантаженість підрядника виникає потреба в оперативному виконанні додаткових задач, доопрацювань та розробки нового функціоналу.… Бази даних та SQL ∙ 7 днів 3 години тому ∙ 12 ставок |
Відновлення інстаграму після блокування3 березня 2026 року заблокували інстаграм з причини порушення правил. Вважаю, що сталася якась помилка, оскільки сторінка була особистою з фото та відео особистих поїздок. Коментарі тощо я не писала ніде. Відправляла кілька разів на оскарження. Не можу скачати свої файли,… Бази даних та SQL, Веб-програмування ∙ 7 днів 14 годин тому ∙ 6 ставок |
Виправити проблему неповного імпорту даних з Excel-файлів специфікацій Нової Пошти в 1С:
2000 UAH
Мета: Є обробка в 1С по завантаженню специфікації Нової Пошти. З незрозумілих причин перестало підгружати деякі табличні дані. Потрібно знайти причину і усунути проблему неповного імпорту даних з Excel-файлів специфікацій Нової Пошти в 1С: Малий Бізнес. Поточний стан: В 1С… Адміністрування систем та мереж, Бази даних та SQL ∙ 10 днів 21 година тому ∙ 16 ставок |