У цій статті пояснюється, як використовувати запити на найбільші значення та запити підсумків, щоб знайти останні або найраніші дати в наборі записів. Це допоможе вам відповісти на різні бізнес-запитання, наприклад, коли клієнт востаннє розмістив замовлення або які п'ять кварталів найкраще підходять для продажу за містом.
У цій статті
Огляд
Ви можете оцінити дані та переглянути елементи з найвищим рейтингом за допомогою запиту на найвищі значення. Запит на найвище значення – це вибірковий запит, який повертає вказану кількість або відсоток значень у верхній частині результатів, наприклад п'ять найпопулярніших сторінок на веб-сайті. Запит на найвищі значення можна використовувати для будь-якого типу значень – вони не обов'язково мають бути числами.
Якщо потрібно згрупувати або підсумувати дані, перш ніж оцінювати їх, не потрібно використовувати запит на найвищі значення. Припустімо, наприклад, що потрібно знайти номери збуту для певної дати для кожного міста, у якому працює ваша компанія. У такому разі міста стають категоріями (потрібно знайти дані в одному місті), тому ви використовуєте запит підсумків.
Коли ви використовуєте запит на найвищі значення, щоб знайти записи, які містять найпізніші або найраніші дати в таблиці або групі записів, ви можете відповісти на різні бізнес-запитання, наприклад:
-
Хто останнім часом робить найбільше продажів?
-
Коли клієнт востаннє оформив замовлення?
-
Коли наступні три дні народження в команді?
Щоб створити запит на найвище значення, спочатку створіть вибірковий запит. Потім відсортуйте дані відповідно до свого запитання ( угорі або внизу). Якщо потрібно згрупувати або підсумувати дані, перетворіть вибірковий запит на запит підсумків. Потім можна використовувати агрегатну функцію, наприклад "Максимум " або "Мінімум ", щоб повернути найбільше або найнижче значення, або " Перше " або "Останнє", щоб повернути найранішу чи останню дату.
У цій статті припускається, що значення дат, які використовуються, мають тип даних "Дата й час". Якщо значення дат знаходяться в текстовому полі, .
Радимо використовувати фільтр замість запиту на найвищі значення
Фільтр зазвичай краще використовувати, якщо у вас є певна дата. Щоб визначити, чи слід створювати запит на найвищі значення або застосовувати фільтр, зверніть увагу на таке:
-
Якщо потрібно повернути всі записи, які відповідають даті, перед певною датою або пізніше, скористайтеся фільтром. Наприклад, щоб переглянути дати збуту в період із квітня по липень, застосуйте фільтр.
-
Якщо потрібно повернути вказаний обсяг записів із останніми або останніми датами в полі, а точні значення дат невідомі або вони не мають значення, створіть запит на найвищі значення. Наприклад, щоб переглянути п'ять кращих кварталів збуту, скористайтеся запитом на найвищі значення.
Докладні відомості про створення та використання фільтрів див. в статті Застосування фільтра для перегляду вибраних записів у базі даних Access.
Підготовка зразків даних для виконання разом із прикладами
У кроках, наведених у цій статті, використовуються дані в наведених нижче зразках таблиць.
Таблиця "Працівники"
|
LastName |
Ім'я |
Адреса |
Місто |
CountryOrR egion |
Дата народження |
Дата прийому на роботу |
|
Коваленко |
Тарас |
вул. Сумська, 13 |
Харків |
USA |
05.02.1968 |
10.06.1994 |
|
Франко |
Андрій |
вул. Сагайдачного, 13 |
Черкаси |
USA |
22.05.1957 |
22.11.1996 |
|
Попкова |
Іванчук |
вул. Лісова, 58 |
Полтава |
USA |
11.11.1960 |
11.03.2000 |
|
Кузьменко |
Євген Данилович |
вул. Індустріальна, 1 |
Донецьк |
UK |
22.03.1964 |
22.06.1998 |
|
Левицька |
Лілія |
вул. Андріївська, 2 |
Одеса |
Мехіко |
05.06.1972 |
05.01.2002 |
|
Бойко |
Галина |
вул. Калініна, 33 |
Полтава |
USA |
23.01.1970 |
23.04.1999 |
|
Погребняк |
Роман |
вул. Барнаульська, 1 |
Суми |
USA |
14.04.1964 |
14.10.2004 |
|
Омельченко |
Світлана |
вул. Біла, 2 |
Миргород |
USA |
29.10.1959 |
29.03.1997 |
Таблиця EventType
|
TypeID (Ідентифікатор типу) |
Тип події |
|
1 |
Запуск продукту |
|
2 |
Корпоративна функція |
|
3 |
Приватна функція |
|
4 |
Збиравач фондів |
|
5 |
Виставка |
|
6 |
Лекція |
|
7 |
Концерт |
|
8 |
Виставки |
|
9 |
Вуличний ярмарок |
Таблиця "Замовники"
|
Ідентифікатор клієнта |
Компанія |
Контакт |
|
1 |
Contoso Ltd. Графічний елемент |
Джонатан Хаас |
|
2 |
Завод іграшок |
Еллен Адамс |
|
3 |
Фабрікам |
Керол Філіпс |
|
4 |
Іграшки wingtip |
Lucio Iallo |
|
5 |
A. База |
Мандар Самант |
|
6 |
Adventure Works |
Брайан Берк |
|
7 |
Інститут дизайну |
Jaka Stele |
|
8 |
Школа образотворчого мистецтва |
Мілена Дуоманова |
Таблиця "Події"
|
EventID (Ідентифікатор події) |
Тип події |
Клієнт |
Дата події |
Ціна |
|
1 |
Запуск продукту |
Contoso Ltd. |
4/14/2011 |
10 000₴ |
|
2 |
Корпоративна функція |
Завод іграшок |
4/21/2011 |
8 000 грн. |
|
3 |
Виставка |
Завод іграшок |
01.05.2011 |
$25 000 |
|
4 |
Виставки |
Проектний інститут |
5/13/2011 |
4 500 грн. |
|
5 |
Виставка |
Contoso Ltd. |
5/14/2011 |
$55 000 |
|
6 |
Концерт |
Школа образотворчого мистецтва |
5/23/2011 |
12 000 грн. |
|
7 |
Запуск продукту |
A. База |
6/1/2011 |
15 000 грн. |
|
8 |
Запуск продукту |
Іграшки wingtip |
6/18/2011 |
21 000$ |
|
9 |
Збиравач фондів |
Adventure Works |
6/22/2011 |
$1300 |
|
10 |
Лекція |
Проектний інститут |
6/25/2011 |
$2450 |
|
11 |
Лекція |
Contoso Ltd. |
04.07.2011 |
$3800 |
|
12 |
Вуличний ярмарок |
Проектний інститут |
04.07.2011 |
148 500 ₴ |
Примітка.: Кроки, описані в цьому розділі, передбачають, що таблиці Customers і Event Type розташовано на стороні "один" зв'язків "один-до-багатьох" з таблицею "Події". У цьому випадку таблиця "Події" містить спільний доступ до полів CustomerID і TypeID. Запити підсумків, описані в наступних розділах, не працюватимуть без цих зв'язків.
Вставте зразок даних на аркуші Excel
-
Запустіть програму Excel. Відкриється пуста книга.
-
Натисніть сполучення клавіш Shift + F11 щоб вставити аркуш (вам знадобляться чотири).
-
Скопіюйте дані з кожної таблиці-зразка в пустий аркуш. Додайте заголовки стовпців (перший рядок).
Створіть таблицю бази даних із робочих аркушів
-
Виберіть дані з першого аркуша, включно з заголовками стовпців.
-
Клацніть правою кнопкою миші в області переходів і виберіть пункт Вставити.
-
Натисніть Так, щоб підтвердити, що перший рядок містить заголовки стовпців.
-
Повторіть кроки 1-3 для кожного з решти робочих аркушів.
Пошук останньої або останньої дати
У кроках цього розділу використовуються зразки даних, щоб проілюструвати процес створення запиту на найвищі значення.
Створення базового запиту на найвищі значення
-
На вкладці Створити в групі Запити натисніть кнопку Конструктор запитів.
-
Двічі клацніть таблицю Працівники та натисніть кнопку Закрити.
Якщо використовується зразок даних, додайте до запиту таблицю "Працівники".
-
Додайте поля, які потрібно використовувати в запиті, до сітки макета. Ви можете двічі клацнути кожне поле або перетягнути кожне поле в пусту клітинку в рядку Поле .
Якщо використовується зразок таблиці, додайте поля Ім'я, Прізвище та Дата народження.
-
У полі, яке містить перші або останні значення (поле "Дата народження", якщо використовується зразок таблиці), клацніть рядок Сортування та виберіть значення За зростанням або За спаданням.
Порядок сортування за спаданням повертає останню дату, а порядок сортування за зростанням повертає найранішу дату.
Увага!: Слід установити значення в рядку Сортування лише для полів, які містять дати. Якщо вказати порядок сортування для іншого поля, запит не поверне потрібні результати.
-
На вкладці Конструктор у групі Знаряддя клацніть стрілку вниз поруч із кнопкою Усі (список Основні значення ) і введіть потрібну кількість записів або виберіть потрібний параметр зі списку.
-
Натисніть кнопку Виконати
, щоб виконати запит і відобразити результати у вікні табличного подання даних. -
Збережіть запит як NextBirthDays.
Ви можете побачити, що цей тип запиту на найвищі значення може відповідати на основні запитання, наприклад, хто є найстаршою або наймолодшою особою в компанії. У наступних кроках пояснюється, як використовувати вирази та інші умови, щоб додати потужності та гнучкості запиту. Умови, показані на наступному кроці, повертають наступні три дні народження працівників.
Додавання умов до запиту
У цих кроках використовується запит, створений у попередній процедурі. Ви можете дотримуватися іншого запиту на найвищі значення, якщо він містить фактичні дані дати й часу, а не текстові значення.
Порада.: Якщо потрібно краще зрозуміти, як працює цей запит, переключайтеся між режимом конструктора та поданням таблиці на кожному кроці. Щоб переглянути фактичний код запиту, перейдіть у режим SQL. Щоб переключатися між поданнями, клацніть правою кнопкою миші вкладку у верхній частині запиту та виберіть потрібне подання.
-
В області переходів клацніть правою кнопкою миші запит NextBirthDays і виберіть конструктор.
-
У сітці макета запиту в стовпці праворуч від дати народження введіть таке:MonthBorn: DatePart("m",[Дата_народження])".Цей вираз видобуває місяць із дати народження за допомогою функції DatePart .
-
У наступному стовпці бланка запиту введіть:DayOfMonthBorn: DatePart("d",[BirthDate])Цей вираз видобуває день місяця з BirthDate за допомогою функції DatePart.
-
Зніміть прапорці в рядку Відображення для кожного з двох введених виразів.
-
Клацніть рядок Сортування для кожного виразу, а потім виберіть пункт За зростанням.
-
У рядку Критерії стовпця Дата народження введіть вираз:Month([Birth Date]) > Month(Date()) OR Month([Birth Date])= Month(Date()) AND Day([Birth Date])>Day(Date())Цей вираз виконує такі дії:
-
Month( [Birth Date]) > Month(Date()) указує, що дата народження кожного працівника припадає на майбутній місяць.
-
The Month( [Birth Date])= Month(Date()) And Day([Birth Date])>Day(Date()) вказує, що якщо дата народження настає в поточному місяці, день народження припадає на поточний день або пізніше.
Коротше кажучи, цей вираз виключає всі записи, у яких день народження настає в період з 1 січня до поточної дати.
Порада.: Додаткові приклади виразів умов запиту див. в статті Приклади умов запиту.
-
-
На вкладці Конструктор у групі Настроювання запиту введіть 3 в полі Return (Повернення ).
-
На вкладці Конструктор у групі Результати натисніть кнопку Запуск
.
Примітка.: У власному запиті, використовуючи власні дані, іноді може відображатися більше записів, ніж задано. Якщо дані містять кілька записів, які містять значення, яке є одним із найбільших значень, запит поверне всі такі записи, навіть якщо це означає, що буде повернуто більше записів, ніж потрібно.
Пошук останніх дат для груп записів
Запит підсумків використовується для пошуку найраніших або останніх дат для записів, які належать до груп, наприклад подій, згрупованих за містом. Запит підсумків – це вибірковий запит, який використовує агрегатні функції (наприклад, Group By, Min, Max, Count, First і Last), щоб обчислювати значення для кожного поля виводу.
Додайте поле, яке потрібно використовувати для категорій, щоб згрупувати за, і поле зі значеннями, які потрібно підсумувати. Якщо включити інші поля виводу ( скажімо, імена клієнтів під час групування за типом події), запит також використовуватиме ці поля, щоб створювати групи, змінюючи результати, щоб вони не відповідали на ваше початкове запитання. Щоб позначити рядки за допомогою інших полів, потрібно створити додатковий запит, який використовуватиме запит підсумків як джерело, і додати до нього додаткові поля.
Порада.: Створення запитів у кроках – це дуже ефективна стратегія відповіді на більш складні запитання. Якщо вам не вдається отримати складний запит на роботу, розгляньте, чи можна розбити його на низку простіших запитів.
Створення запиту підсумків
У цій процедурі для відповіді на це запитання використовуються зразки таблиць Events і EventType :
Коли була остання подія кожного типу події, за винятком концертів?
-
На вкладці Створити в групі Запити натисніть кнопку Конструктор запитів.
-
Двічі клацніть таблиці Events і EventType. Кожна таблиця відображається у верхній частині конструктора запитів.
-
Двічі клацніть поле EventType таблиці EventType і поле EventDate з таблиці Events, щоб додати поля до сітки макета запиту.
-
У сітці макета запиту в рядку Критерії поля EventType введіть <>Concert.
Порада.: Додаткові приклади виразів умов див. в статті Приклади умов запиту.
-
На вкладці Конструктор у групі Відображення або приховання натисніть кнопку Підсумки.
-
У сітці макета запиту клацніть рядок Підсумок поля EventDate і натисніть кнопку Максимум.
-
На вкладці Конструктор у групі Результати натисніть кнопку Подання та виберіть пункт Режим SQL.
-
У вікні SQL у кінці речення SELECT відразу після ключового слова AS замініть MaxOfEventDate на MostRecent.
-
Збережіть запит як MostRecentEventByType.
Створення другого запиту для додавання додаткових даних
У цій процедурі використовується запит MostRecentEventByType із попередньої процедури, щоб відповісти на це запитання:
Хто був клієнтом на останніх подіях кожного типу подій?
-
На вкладці Створити в групі Запити натисніть кнопку Конструктор запитів.
-
На вкладці Запити двічі клацніть запит MostRecentEventByType.
-
На вкладці Таблиці двічі клацніть таблиці Події та Клієнти.
-
У конструкторі запитів двічі клацніть такі поля:
-
У таблиці Events (Події) двічі клацніть EventType (Тип події).
-
У запиті MostRecentEventByType двічі клацніть елемент MostRecent.
-
У таблиці Customers (Клієнти) двічі клацніть Company (Компанія).
-
-
На бланку запиту в рядку Сортування стовпця EventType натисніть кнопку За зростанням.
-
На вкладці Конструктор у групі Результати натисніть кнопку Запуск.