Acest articol vă arată cum să utilizați interogările cu valori superioare și total interogări pentru a găsi cele mai recente sau mai vechi date dintr-un set de înregistrări. Acest lucru vă poate ajuta să răspundeți la o varietate de întrebări de afaceri, cum ar fi când un client a plasat Ultima dată o comandă sau care au fost cele mai bune cinci sferturi pentru vânzări, după oraș.
În acest articol
Prezentare generală
Puteți să clasificați datele și să revizuiți elementele cu cel mai înalt grad utilizând o interogare cu valori superioare. O interogare de valoare superioară este o interogare de selectare care returnează un număr specificat sau un procent de valori din partea de sus a rezultatelor, de exemplu, cele mai populare cinci pagini de pe un site web. Puteți utiliza o interogare cu valori superioare pentru orice tip de valori – nu trebuie să fie numere.
Dacă doriți să grupați sau să rezumați datele înainte de a-l clasifica, nu trebuie să utilizați o interogare cu valori superioare. De exemplu, să presupunem că trebuie să găsiți numerele de vânzări pentru o dată dată pentru fiecare oraș în care funcționează firma dvs. În acest caz, orașele devin categorii (trebuie să găsiți datele per oraș), astfel încât să utilizați o interogare de totaluri.
Atunci când utilizați o interogare cu valori superioare pentru a găsi înregistrări care conțin cele mai recente sau mai vechi date dintr-un tabel sau dintr-un grup de înregistrări, puteți să răspundeți la o varietate de întrebări de afaceri, cum ar fi următoarele:
-
Cine a făcut cele mai multe vânzări în ultimul timp?
-
Când a fost efectuat un client Ultima dată o comandă?
-
Când sunt următoarele trei zile de naștere în echipă?
Pentru a crea o interogare cu valori superioare, începeți prin a crea o interogare de selectare. Apoi, sortați datele în funcție de întrebarea dvs., indiferent dacă căutați în partea de sus sau de jos. Dacă trebuie să grupați sau să rezumați datele, transformați interogarea de selectare într-o interogare de totaluri. Apoi puteți să utilizați o funcție agregată, cum ar fi Max sau min , pentru a returna valoarea cea mai mare sau cea mai mică sau prima sau Ultima pentru a returna cea mai veche sau cea mai recentă dată.
Acest articol presupune că valorile de dată pe care le utilizați au tipul de date dată/oră. Dacă valorile de date se află într-un câmp text,.
Luați în considerare utilizarea unui filtru în locul unei interogări de valori superioare
Un filtru este de obicei mai bun dacă aveți o anumită dată în vedere. Pentru a determina dacă ar trebui să creați o interogare cu valori de top sau să aplicați un filtru, luați în considerare următoarele:
-
Dacă doriți să returnați toate înregistrările în care se potrivește data, este înainte sau mai târziu de o anumită dată, utilizați un filtru. De exemplu, pentru a vedea datele pentru vânzări între aprilie și iulie, aplicați un filtru.
-
Dacă doriți să returnați un număr specificat de înregistrări care au cele mai recente sau cele mai recente date într-un câmp și nu știți valorile exacte ale datei sau nu contează, creați o interogare cu valori superioare. De exemplu, pentru a vedea cele mai bune cinci trimestre de vânzări, utilizați o interogare cu valori superioare.
Pentru mai multe informații despre crearea și utilizarea filtrelor, consultați articolul aplicarea unui filtru pentru a vizualiza înregistrările selectate într-o bază de date Access.
Pregătirea datelor eșantion de urmărit împreună cu exemplele
Pașii din acest articol utilizează datele din următoarele tabele eșantion.
Tabelul angajați
Nume |
Prenume |
Adresă |
Localitate |
CountryOrR egion |
Data nașterii |
Data angajării |
Barnhill |
Josh |
1 Main St. |
New York |
SUA |
05-feb-1968 |
10-iun-1994 |
Heloo |
Waleed |
52 1st St. |
Boston |
SUA |
22-mai-1957 |
22-nov-1996 |
Roman |
Guido |
3122 75th Ave. S.W |
Seattle |
SUA |
11-nov-1960 |
11-mar-2000 |
Bagel |
Jean Philippe |
1 Contoso Blvd. |
Londra |
Regatul Unit |
22-mar-1964 |
22-iun-1998 |
Price |
Julian |
Calle Smith 2 |
Mexico City |
Mexic |
05-iun-1972 |
05-ian-2002 |
Hughes |
Christine |
3122 75th St. S. |
Seattle |
SUA |
23-ian-1970 |
23-apr-1999 |
Riley |
Steve |
67 Big St. |
Tampa |
SUA |
14-apr-1964 |
14-oct-2004 |
Birkby |
Dana |
2 Nosey Pkwy |
Portland |
SUA |
29-oct-1959 |
29-mar-1997 |
Tabelul EventType
TypeID |
Tipul evenimentului |
1 |
Lansarea produsului |
2 |
Funcția Corporate |
3 |
Funcția privat |
4 |
Strângere fonduri |
5 |
Prezentare comercială |
6 |
Prelegere |
7 |
Concert |
8 |
Avea |
9 |
Târg stradal |
Tabelul Clienți
IDClient |
Firmă |
Persoană de contact |
1 |
Contoso, Ltd. Grafic |
Ionut horia |
2 |
Tailspin Toys |
Ellen Adams |
3 |
Fabrikam |
Carol Philips |
4 |
Wingtip Toys |
Luminita Iallo |
5 |
A. Datum |
Samant |
6 |
Adventure Works |
Brian Burke |
7 |
Institutul de proiectare |
Stele |
8 |
Școala de artă plastică |
Mirela Duomanova |
Tabelul evenimente
IDEveniment |
Tipul evenimentului |
Client |
Data evenimentului |
Preț |
1 |
Lansarea produsului |
Contoso, Ltd. |
4/14/2011 |
10.000 lei |
2 |
Funcția Corporate |
Tailspin Toys |
4/21/2011 |
8.000 lei |
3 |
Prezentare comercială |
Tailspin Toys |
01.05.11 |
$25.000 |
4 |
Avea |
Graphic Design Institute |
5/13/2011 |
4.500 lei |
5 |
Prezentare comercială |
Contoso, Ltd. |
5/14/2011 |
$55.000 |
6 |
Concert |
Școala de artă plastică |
5/23/2011 |
12.000 lei |
7 |
Lansarea produsului |
A. Datum |
6/1/2011 |
15.000 lei |
8 |
Lansarea produsului |
Wingtip Toys |
6/18/2011 |
21.000 lei |
9 |
Strângere fonduri |
Adventure Works |
6/22/2011 |
$1.300 |
10 |
Prelegere |
Graphic Design Institute |
6/25/2011 |
$2.450 |
11 |
Prelegere |
Contoso, Ltd. |
04.07.2011 |
$3.800 |
12 |
Târg stradal |
Graphic Design Institute |
04.07.2011 |
5.500 lei |
Notă: Pașii din această secțiune Presupun că tabelele de tip clienți și evenimente se află în partea "unu" a relațiilor unu-la-mai-mulți cu tabelul Events. În acest caz, tabelul Events partajează câmpurile IDClient și TypeID. Interogările totale descrise în secțiunile următoare nu vor funcționa fără acele relații.
Lipirea datelor eșantion în foi de lucru Excel
-
Porniți Excel. Se deschide un registru de lucru necompletat.
-
Apăsați SHIFT+F11 pentru a insera o foaie de lucru (veți avea nevoie de patru).
-
Copiați datele din fiecare tabel eșantion într-o foaie de lucru necompletată. Includeți titlurile de coloană (primul rând).
Crearea tabelelor bazei de date din foile de lucru
-
Selectați datele din prima foaie de lucru, inclusiv titlurile de coloană.
-
Faceți clic cu butonul din dreapta pe Panoul de navigare, apoi faceți clic pe Lipire.
-
Faceți clic pe Da pentru a confirma că primul rând conține titluri de coloană.
-
Repetați pașii 1-3 pentru fiecare foaie de lucru rămasă.
Găsirea celei mai recente sau mai puțin recente date
Pașii din această secțiune utilizează datele eșantion pentru a ilustra procesul de creare a unei interogări de valori superioare.
Crearea unei interogări cu valori de top de bază
-
În fila Creare, în grupul Interogări, faceți clic pe Proiectare interogare.
-
Faceți dublu clic pe tabelul angajați, apoi faceți clic pe Închidere.
Dacă utilizați datele eșantion, adăugați tabelul Angajați la interogare.
-
Adăugați câmpurile pe care doriți să le utilizați în interogare în grila de proiectare. Puteți să faceți dublu clic pe fiecare câmp sau să glisați și să fixați fiecare câmp într-o celulă necompletată din rândul câmp .
Dacă utilizați tabelul eșantion, adăugați primul nume, numele de familie și câmpurile dată de naștere.
-
În câmpul care conține valorile superioare sau inferioare (câmpul Data nașterii, dacă utilizați tabelul eșantion), faceți clic pe Sortare și selectați Ascendent sau Descendent.
Ordinea de Sortare descendentă Returnează data cea mai recentă, iar ordinea de sortare ascendentă returnează cea mai veche dată.
Important: Trebuie să setați o valoare în rândul Sortare doar pentru câmpurile care conțin datele. Dacă specificați o ordine de sortare pentru alt câmp, interogarea nu returnează rezultatele dorite.
-
Pe fila Proiectare , în grupul Instrumente , faceți clic pe săgeata în jos de lângă toate (lista valori de sus ) și introduceți numărul de înregistrări pe care doriți să le vedeți sau selectați o opțiune din listă.
-
Faceți clic pe Rulare
pentru a rula interogarea și a afișa rezultatele într-o vizualizare Foaie de date. -
Salvați interogarea ca NextBirthDays.
Veți vedea că acest tip de interogare cu valori de top poate răspunde la întrebări de bază, cum ar fi cine este cea mai în vârstă sau cea mai tânără persoană din firmă. Următorii pași vă arată cum să utilizați expresii și alte criterii pentru a oferi putere și flexibilitate interogării. Criteriile prezentate în următorul pas returnează următoarele trei zile de naștere ale angajaților.
Adăugarea de criterii la o interogare
Acești pași utilizează interogarea creată în procedura anterioară. Puteți să urmăriți împreună cu o interogare de valori superioare diferite, atât timp cât conține date efective/oră, nu valori text.
Sfat: Dacă doriți să înțelegeți mai bine cum funcționează această interogare, comutați între vizualizarea proiect și vizualizarea foaie de date la fiecare pas. Dacă doriți să vedeți codul de interogare real, comutați la vizualizarea SQL. Pentru a comuta între vizualizări, faceți clic cu butonul din dreapta pe fila din partea de sus a interogării, apoi faceți clic pe vizualizarea dorită.
-
În panoul de navigare, faceți clic cu butonul din dreapta pe interogarea NextBirthDays, apoi faceți clic pe Vizualizare proiect.
-
În grila de proiectare a interogării, în coloana din dreapta nașterii, introduceți următoarele:
MonthBorn: datepart ("m", [data nașterii]). Această expresie extrage luna de la naștere, utilizând funcția datepart . -
În următoarea coloană din grila de proiectare a interogării, introduceți următoarele:
DayOfMonthBorn: datepart ("d", [dată de naștere]) această expresie extrage ziua din lună de la naștere, utilizând funcția datepart . -
Debifați casetele de selectare din rândul Afișare pentru fiecare dintre cele două expresii pe care tocmai le-ați introdus.
-
Faceți clic pe rândul de Sortare pentru fiecare expresie, apoi selectați ascendent.
-
În rândul criterii al coloanei dată de naștere , tastați următoarea expresie:
month ([data nașterii]) > lună (dată ()) sau lună (data nașterii]) = month (date ()) și Day ([data nașterii]) >zi (dată ()) această expresie face următoarele:-
Lună ( [data nașterii]) > lună (dată ()) specifică faptul că data de naștere a fiecărui angajat se încadrează într-o lună viitoare.
-
Lună ( [data nașterii]) = month (date ()) și Day (data nașterii]) >zi (dată ()) specifică faptul că, dacă data nașterii are loc în luna curentă, ziua de naștere cade la sau după ziua curentă.
Pe scurt, această expresie exclude toate înregistrările în care apare ziua de naștere între 1 ianuarie și data curentă.
Sfat: Pentru mai multe exemple de expresii ale criteriilor de interogare, consultați articolul exemple de criterii de interogare.
-
-
Pe fila Proiectare , în grupul Inițializare interogare , tastați 3 în caseta retur .
-
Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare
.
Notă: În propria interogare utilizând propriile date, este posibil să vedeți uneori mai multe înregistrări decât ați specificat. Dacă datele conțin mai multe înregistrări care partajează o valoare care se numără printre valorile superioare, interogarea va returna toate aceste înregistrări, chiar dacă aceasta înseamnă returnarea mai multor înregistrări decât ați dorit.
Găsirea datelor cele mai recente sau cel mai recent pentru grupurile de înregistrări
Utilizați o interogare de totaluri pentru a găsi cele mai vechi sau cele mai recente date pentru înregistrările care se încadrează în grupuri, cum ar fi evenimentele grupate după oraș. O interogare totaluri este o interogare de selectare care utilizează funcții agregate (cum ar fi Grupare după, Mîn, Max, Count, primași Ultima) pentru a calcula valori pentru fiecare câmp de ieșire.
Includeți câmpul pe care doriți să-l utilizați pentru categorii, pentru a Grupa după-și câmpul cu valorile pe care doriți să le rezumați. Dacă includeți alte câmpuri de ieșire-spuneți, numele clienților atunci când grupați după tipul evenimentului-interogarea va utiliza acele câmpuri pentru a face grupuri, modificând rezultatele, astfel încât să nu răspundă la întrebarea inițială. Pentru a eticheta rândurile utilizând alte câmpuri, creați o interogare suplimentară care utilizează interogarea totaluri ca sursă și adăugați câmpurile suplimentare la acea interogare.
Sfat: Interogările de construcții din pași reprezintă o strategie foarte eficientă pentru a răspunde la întrebări mai complexe. Dacă întâmpinați probleme la lucrul cu o interogare complicată, luați în considerare dacă o puteți detalia într-o serie de interogări mai simple.
Crearea unei interogări de totaluri
Această procedură utilizează tabelul eșantion evenimente și tabelul eșantion EventType pentru a răspunde la această întrebare:
Când a fost cel mai recent eveniment pentru fiecare tip de eveniment, excluzând concerte?
-
În fila Creare, în grupul Interogări, faceți clic pe Proiectare interogare.
-
Faceți dublu clic pe tabelele evenimente și EventType.
Fiecare tabel apare în secțiunea de sus a proiectantului de interogări. -
Faceți dublu clic pe câmpul EventType din tabelul EventType și câmpul EventDate din tabelul evenimente pentru a adăuga câmpurile la grila de proiectare a interogării.
-
În grila de proiectare a interogării, în rândul criterii al câmpului EventType , introduceți <>concert.
Sfat: Pentru mai multe exemple de expresii de criterii, consultați articolul exemple de criterii de interogare.
-
Pe fila Proiectare, în grupul Afișare/Ascundere faceți clic pe Totaluri.
-
În grila de proiectare a interogării, faceți clic pe rândul Total al câmpului EventDate, apoi faceți clic pe Max.
-
Pe fila Proiectare, în grupul Rezultate, faceți clic pe Vizualizare, apoi faceți clic pe SQL.
-
În fereastra SQL, la sfârșitul clauzei SELECT, imediat după cuvântul cheie, înlocuiți MaxOfEventDate cu MostRecent.
-
Salvați interogarea ca MostRecentEventByType.
Creați o a doua interogare pentru a adăuga mai multe date
Această procedură utilizează interogarea MostRecentEventByType din procedura anterioară pentru a răspunde la această întrebare:
Cine a fost clientul la cel mai recent eveniment al fiecărui tip de eveniment?
-
În fila Creare, în grupul Interogări, faceți clic pe Proiectare interogare.
-
Pe fila interogări , faceți dublu clic pe interogarea MostRecentEventByType.
-
Pe fila tabele , faceți dublu clic pe tabelul evenimente și pe tabelul clienți.
-
În proiectantul de interogări, faceți dublu clic pe următoarele câmpuri:
-
În tabelul Events, faceți dublu clic pe EventType.
-
În interogarea MostRecentEventByType, faceți dublu clic pe MostRecent.
-
În tabelul clienți, faceți dublu clic pe firmă.
-
-
În grila de proiectare a interogării, în rândul Sortare al coloanei EventType , selectați ascendent.
-
Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.