Questo articolo spiega come usare le query dei primi valori e dei totali per trovare le date più recenti o meno recenti in un set di record. In questo modo è possibile rispondere a diverse domande aziendali, ad esempio quando un cliente ha effettuato l'ultimo ordine o quali cinque trimestri sono stati i migliori per le vendite, per città.
Contenuto dell'articolo
Panoramica
È possibile classificare i dati ed esaminare gli elementi con il rango più alto usando una query dei primi valori. Una query dei primi valori è una query di selezione che restituisce un numero specificato o la percentuale di valori dalla parte superiore dei risultati, ad esempio le cinque pagine più popolari in un sito Web. È possibile usare una query dei primi valori su qualsiasi tipo di valori, che non devono necessariamente essere numeri.
Per raggruppare o riepilogare i dati prima di classificarli, non è necessario usare una query dei primi valori. Si supponga, ad esempio, che è necessario trovare i numeri relativi alle vendite in una data specificata per ogni città in cui opera l'azienda. In questo caso, le città diventano categorie perché è necessario trovare i dati per ogni città, quindi si usa una query di totalizzazione.
Quando si usa una query dei primi valori per trovare i record che contengono le date più recenti o meno recenti in una tabella o in un gruppo di record, è possibile rispondere a un'ampia gamma di domande aziendali, ad esempio:
-
Chi ha registrato il maggior numero di vendite negli ultimi tempi?
-
In che data un cliente ha effettuato l'ultimo ordine?
-
Quando compirà i prossimi tre compleanni nella squadra?
Per creare una query dei primi valori, iniziare creando una query di selezione. Quindi, ordina i dati in base alla tua domanda, che tu stia cercando la parte superiore o inferiore. Se è necessario raggruppare o riepilogare i dati, trasformare la query di selezione in una query di totalizzazione. È quindi possibile usare una funzione di aggregazione, ad esempio Max o Min , per restituire il valore più alto o più basso oppure Primo o Ultimo per restituire la data più recente o meno recente.
Questo articolo presuppone che i valori di data usati abbiano il tipo di dati Data/ora. Se i valori di data si trovano in un campo di testo, .
È consigliabile usare un filtro invece di una query dei primi valori
Un filtro è in genere migliore se si ha in mente una data specifica. Per determinare se creare una query dei primi valori o applicare un filtro, tenere presenti le considerazioni seguenti:
-
Per restituire tutti i record in cui la data corrisponde, è precedente o successiva a una data specifica, usare un filtro. Ad esempio, per visualizzare le date per le vendite tra aprile e luglio, applicare un filtro.
-
Se si vuole restituire un determinato numero di record che contengono le date più recenti o più recenti in un campo e non si conoscono i valori di data esatti o che non sono importanti, creare una query dei primi valori. Ad esempio, per visualizzare i cinque trimestri di vendita migliori, usare una query dei primi valori.
Per altre informazioni sulla creazione e l'uso di filtri, vedere l'articolo Applicare un filtro per visualizzare i record selezionati in un database di Access.
Preparare i dati di esempio da seguire insieme agli esempi
I passaggi descritti in questo articolo usano i dati nelle tabelle di esempio seguenti.
Tabella Dipendenti
|
Cognome |
Nome |
Address |
Città |
Egion CountryOrR |
Data di nascita |
Data di assunzione |
|
Ruspini |
Davide |
Piazza Martedì 28 |
Milano |
Italia |
05 feb 1968 |
10 giu 1994 |
|
Martino |
Agostino |
Via Giovedì 47 |
Bologna |
Italia |
22 mag 1957 |
22-nov-1996 |
|
Sagese |
Diego |
3122 75a Ave. S.W. |
Milano |
Italia |
11 nov 1960 |
11 mar 2000 |
|
Tanara |
Marco |
Corso Venerdì 68 |
Piacenza |
Italia |
22 mar 1964 |
22 giu 1998 |
|
Monaco |
Massimiliano |
Via Domenica 25 |
Modena |
Italia |
05 giu 1972 |
05 giu 2002 |
|
Guaita |
Daniela |
Via Mercoledì 8 |
Milano |
Italia |
23 gen 1970 |
23 apr 1999 |
|
Garghentini |
Davide |
Piazza Venerdì 72 |
Parma |
Italia |
14 apr 1964 |
14 ott 2004 |
|
Giorgi |
Adriana |
Via Martedì 58 |
Torino |
Italia |
29 ott 1959 |
29 mar 1997 |
Tabella EventType
|
ID tipo |
Tipo di evento |
|
1 |
Lancio del prodotto |
|
2 |
Funzione aziendale |
|
3 |
Funzione privata |
|
4 |
Raccolta fondi |
|
5 |
Fiera |
|
6 |
Lezione |
|
7 |
Concerto |
|
8 |
Mostra |
|
9 |
Manifestazioni |
Tabella Clienti
|
ID cliente |
Società |
Contatto |
|
1 |
Contoso, Ltd. Graphic |
Carmelo Barese |
|
2 |
Tailspin Toys |
Raffaella Pagnotto |
|
3 |
Fabrikam |
Filippa Bruno |
|
4 |
Wingtip Toys |
Mattia Trentini |
|
5 |
A. Datum |
Francesca Lombo |
|
6 |
Adventure Works |
Cataldo Capon |
|
7 |
Design Institute |
Sofia Mancini |
|
8 |
School of Fine Art |
Irma Palermo |
Tabella Eventi
|
EventID |
Tipo di evento |
Cliente |
Data evento |
Prezzo |
|
1 |
Lancio del prodotto |
Contoso, Ltd. |
4/14/2011 |
€ 10.000 |
|
2 |
Funzione aziendale |
Tailspin Toys |
4/21/2011 |
€ 8.000 |
|
3 |
Fiera |
Tailspin Toys |
01.05.11 |
€ 25.000 |
|
4 |
Mostra |
Graphic Design Institute |
5/13/2011 |
€ 4.500 |
|
5 |
Fiera |
Contoso, Ltd. |
5/14/2011 |
€ 55.000 |
|
6 |
Concerto |
School of Fine Art |
5/23/2011 |
€ 12.000 |
|
7 |
Lancio del prodotto |
A. Datum |
6/1/2011 |
€ 15.000 |
|
8 |
Lancio del prodotto |
Wingtip Toys |
6/18/2011 |
€ 21.000 |
|
9 |
Raccolta fondi |
Adventure Works |
6/22/2011 |
€ 1.300 |
|
10 |
Lezione |
Graphic Design Institute |
6/25/2011 |
€ 2.450 |
|
11 |
Lezione |
Contoso, Ltd. |
4/7/2011 |
€ 3.800 |
|
12 |
Manifestazioni |
Graphic Design Institute |
4/7/2011 |
€ 5.500 |
Nota: La procedura descritta in questa sezione presuppone che le tabelle Clienti e Tipo di evento corrispondano al lato "uno" di una relazione uno-a-molti con la tabella Eventi. In questo caso, la tabella Eventi condivide i campi ID cliente e ID tipo. Le query di totalizzazione descritte nelle sezioni successive non funzionano senza queste relazioni.
Incollare i dati di esempio nei fogli di lavoro di Excel
-
Avviare Excel. Si apre una cartella di lavoro vuota.
-
Premere MAIUSC+F11 per inserire un foglio di lavoro (sono necessari quattro).
-
Copiare i dati di ogni tabella di esempio in un foglio di lavoro vuoto. Includere le intestazioni di colonna (la prima riga).
Creare tabelle di database dai fogli di lavoro
-
Selezionare i dati del primo foglio di lavoro, incluse le intestazioni di colonna.
-
Fare clic con il pulsante destro del mouse sul riquadro di spostamento e quindi scegliere Incolla.
-
Fare clic su Sì per confermare che la prima riga contiene intestazioni di colonna.
-
Ripetere i passaggi da 1 a 3 per ognuno dei fogli di lavoro rimanenti.
Trovare la data più o meno recente
I passaggi di questa sezione usano i dati di esempio per illustrare il processo di creazione di una query dei primi valori.
Creare una query dei primi valori di base
-
Nel gruppo Query della scheda Crea fare clic su Struttura query.
-
Fare doppio clic sulla tabella Dipendenti e quindi su Chiudi.
Se si usano i dati di esempio, aggiungere la tabella Dipendenti alla query.
-
Aggiungere i campi da usare nella query alla griglia di struttura. È possibile fare doppio clic su ogni campo oppure trascinare e rilasciare ogni campo in una cella vuota nella riga Campo.
Se si usa la tabella di esempio, aggiungere i campi Nome, Cognome e Data di nascita.
-
Nel campo che contiene i valori superiori o inferiori, ovvero il campo Data di nascita se si usa la tabella di esempio, fare clic sulla riga Ordina e selezionare Crescente o Decrescente.
L'ordinamento decrescente restituisce la data più recente, mentre l'ordinamento crescente restituisce la data meno recente.
Importante: È necessario impostare un valore nella riga Ordina solo per i campi che contengono le date. Se si specifica l'ordinamento per un altro campo, la query non restituisce i risultati desiderati.
-
Nel gruppo Strumenti della scheda Struttura fare clic sulla freccia in giù accanto a Tutte (elenco Primi valori) e immettere il numero di record da visualizzare oppure selezionare un'opzione nell'elenco.
-
Fare clic su Esegui
per eseguire la query e aprire i risultati in visualizzazione Foglio dati. -
Salvare la query come NextBirthDays.
Come si può notare, questo tipo di query dei primi valori può rispondere a domande di base, ad esempio riguardo a quale sia la persona più vecchia o più giovane della società. I passaggi seguenti descrivono come usare espressioni e altri criteri per aggiungere efficacia e flessibilità alla query. I criteri indicati nel passaggio seguente restituiscono i prossimi tre compleanni dei dipendenti.
Aggiungere criteri alla query
Questi passaggi usano la query creata nella procedura precedente. È possibile seguire una query dei primi valori diversa purché contenga dati di data/ora effettivi, non valori di testo.
Suggerimento: Per comprendere meglio il funzionamento della query, passare dalla visualizzazione Struttura alla visualizzazione Foglio dati e viceversa a ogni passaggio. Per visualizzare il codice di query effettivo, passare alla visualizzazione SQL. Per passare da una visualizzazione all'altra, fare clic con il pulsante destro del mouse sulla scheda nella parte superiore della query e quindi scegliere la visualizzazione desiderata.
-
Nel riquadro di spostamento fare clic con il pulsante destro del mouse sulla query NextBirthDays e quindi scegliere Visualizzazione Struttura.
-
Nella colonna a destra di BirthDate nella griglia di struttura della query immettere quanto segue:MonthBorn: DatePart("m",[DataDiNascita]).Questa espressione estrae il mese da BirthDate usando la funzione DatePart .
-
Nella colonna successiva della griglia di struttura della query immettere quanto segue:DayOfMonthBorn: DatePart("d",[BirthDate])Questa espressione estrae il giorno del mese da BirthDate usando la funzione DatePart .
-
Deselezionare le caselle di controllo nella riga Mostra per ognuna delle due espressioni appena immesse.
-
Fare clic sulla riga Ordina per ogni espressione e quindi selezionare Crescente.
-
Nella riga Criteri della colonna Data di nascita digitare l'espressione seguente:Month([Data di nascita]) > Month(Date()) OR Month([Data di nascita])= Month(Date()) AND Day([Data di nascita])>Day(Date())Questa espressione esegue le operazioni seguenti:
-
Month( [Data di nascita]) > Month(Date()) specifica che la data di nascita di ogni dipendente rientra in un mese futuro.
-
Il Mese([Data di nascita])= Month(Date()) And Day([Data di nascita])>Day(Date()) specifica che se la data di nascita si verifica nel mese corrente, il compleanno cade il giorno corrente o dopo tale data.
In breve, questa espressione esclude tutti i record in cui si verifica il compleanno tra il 1° gennaio e la data corrente.
Suggerimento: Per altri esempi di espressioni dei criteri di query, vedere l'articolo Esempi di criteri di query.
-
-
Nel gruppo Imposta query della scheda Struttura digitare 3 nella casella Invio.
-
Nel gruppo Risultati della scheda Progettazione fare clic su Esegui
.
Nota: Nella query personalizzata usando i propri dati, a volte potrebbero essere visualizzati più record di quelli specificati. Se i dati contengono più record che condividono un valore compreso tra i primi valori, la query restituirà tutti questi record anche se ciò significa restituire più record di quanti ne desiderati.
Trovare le date più o meno recenti per gruppi di record
Usare una query di totalizzazione per trovare le date più recenti o meno recenti per i record che rientrano in gruppi, ad esempio gli eventi raggruppati per città. Una query di totalizzazione è una query di selezione che usa funzioni di aggregazione, ad esempio Raggruppa per, Min, Max, Conteggio, Primo e Ultimo, per calcolare i valori per ogni campo di output.
Includere il campo da usare per le categorie, in base al quale raggruppare, e il campo con i valori da riepilogare. Se si includono altri campi di output, ad esempio i nomi dei clienti durante il raggruppamento per tipo di evento, la query userà anche questi campi per creare gruppi, modificando i risultati in modo che non rispondano alla domanda originale. Per etichettare le righe usando altri campi, creare una query aggiuntiva che usa la query di totalizzazione come origine e aggiungere altri campi alla query.
Suggerimento: La creazione di query in passaggi è una strategia molto efficace per rispondere a domande più avanzate. In caso di problemi nel funzionamento di una query complessa, valutare se è possibile suddividerla in una serie di query più semplici.
Creare una query di totalizzazione
Questa procedura usa la tabella di esempio Events e la tabella di esempio EventType per rispondere a questa domanda:
Quando è stato l'evento più recente di ogni tipo di evento, esclusi i concerti?
-
Nel gruppo Query della scheda Crea fare clic su Struttura query.
-
Fare doppio clic sulle tabelle Events e EventType. Ogni tabella viene visualizzata nella sezione superiore di Progettazione query.
-
Fare doppio clic sul campo EventType della tabella EventType e sul campo EventDate dalla tabella Events per aggiungere i campi alla griglia di struttura della query.
-
Nella riga Criteri del campo EventType della griglia di struttura della query immettere <>Concert.
Suggerimento: Per altri esempi di espressioni dei criteri, vedere l'articolo Esempi di criteri di query.
-
Nel gruppo Mostra/Nascondi della scheda Progettazione fare clic su Totali.
-
Nella griglia di struttura della query fare clic sulla riga Totale del campo Data Evento e quindi su Max.
-
Fare clic su Visualizza nel gruppo Risultati della scheda Struttura e quindi fare clic su Visualizzazione SQL.
-
Alla fine della clausola SELECT nella finestra SQL, subito dopo la parola chiave AS, sostituire MaxOfEventDate con MostRecent.
-
Salvare la query come MostRecentEventByType.
Creare una seconda query per aggiungere altri dati
Questa procedura usa la query MostRecentEventByType della procedura precedente per rispondere a questa domanda:
Chi è stato il cliente all'evento più recente di ogni tipo di evento?
-
Nel gruppo Query della scheda Crea fare clic su Struttura query.
-
Nella scheda Query fare doppio clic sulla query MostRecentEventByType.
-
Nella scheda Tabelle fare doppio clic sulla tabella Events e sulla tabella Customers.
-
In Progettazione query fare doppio clic sui campi seguenti:
-
Nella tabella Events fare doppio clic su EventType.
-
Nella query MostRecentEventByType fare doppio clic su MostRecent.
-
Nella tabella Clienti fare doppio clic su Società.
-
-
Nella griglia di struttura della query selezionare Crescente nella riga Ordina della colonna EventType.
-
Nel gruppo Risultati della scheda Struttura fare clic su Esegui.