Questo articolo spiega come usare le query dei primi valori e le query di totalità per trovare le date più recenti o meno recenti in un set di record. In questo modo è possibile rispondere a un'ampia varietà di 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à.
In questo articolo
Panoramica
È possibile classificare i dati ed esaminare gli elementi con la classificazione più alta usando una query dei primi valori. Una query dei primi valori è una query di selezione che restituisce un numero o una percentuale specificata 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 valore, senza che siano numeri.
Per raggruppare o riepilogare i dati prima di classificarlo, 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 fatto il maggior numero di vendite di recente?
-
In che data un cliente ha effettuato l'ultimo ordine?
-
Quando sono i prossimi tre compleanni nel team?
Per creare una query dei primi valori, iniziare creando una query di selezione. Ordinare quindi i dati in base alla domanda, sia nella parte superiore che in basso. Se è necessario raggruppare o riepilogare i dati, trasformare la query di selezione in una query di total. È quindi possibile usare una funzione di aggregazione, ad esempio Max o Min, per restituire il valore più alto o più basso oppure Prima o Ultima per restituire la data più recente o meno recente.
Questo articolo presuppone che i valori di data utilizzati siano del tipo di dati Data/ora. Se i valori di data sono in un campo di testo, .
È consigliabile usare un filtro invece di una query dei primi valori
Un filtro è in genere migliore se si ha 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 numero specificato di record che hanno le date più recenti o più recenti in un campo e non si conoscono i valori di data esatti o se questi valori 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 dei filtri, vedere l'articolo Applicare un filtro per visualizzare 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 delle tabelle di esempio seguenti.
Tabella Dipendenti
Cognome |
Nome |
Indirizzo |
Città |
CountryOrR egion |
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 75esima ora. 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 in fogli di lavoro di Excel
-
Avviare Excel. Si apre una cartella di lavoro vuota.
-
Premere MAIUSC+F11 per inserire un foglio di lavoro (ne servono quattro).
-
Copiare i dati da 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 fare clic 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 tipo Data/ora effettivi, non valori di testo.
Suggerimento: Per comprendere meglio il funzionamento di questa query, passare dalla visualizzazione Struttura alla visualizzazione Foglio dati a ogni passaggio. Se si vuole visualizzare il codice della query effettivo, passare alla SQL visualizzazione. 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:
MonthDate: DatePart("m",[DataDi Nascita]).
Questa espressione estrae il mese da BirthDate usando la funzione DatePart. -
Nella colonna successiva della griglia di struttura della query immettere quanto segue:
DayOfMonth(): 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.
-
Month([Data dinascita])= Month(Date()) And Day([Data di nascita])>Day(Date()) specifica che se la data di nascita si verifica nel mese corrente, il compleanno rientra o dopo il giorno corrente.
In breve, questa espressione esclude i record in cui il compleanno ricorre tra il 1° gennaio e la data corrente.
Suggerimento: Per altri esempi di espressioni per criteri di query, vedere l'articolo Esempi di criteri di query.
-
-
Nel gruppo Imposta query della scheda Progettazione digitare 3 nella casella Invio.
-
Nel gruppo Risultati della scheda Progettazione fare clic su Esegui .
Nota: Nella propria query con i propri dati, a volte è possibile che venga visualizzato più record di quanto specificato. Se i dati contengono più record che condividono un valore tra i primi valori, la query restituirà tutti questi record anche se questo significa restituire più record del necessario.
Trovare le date più o meno recenti per gruppi di record
Usare una query di totalità per trovare le date più recenti o meno recenti per i record che rientrano in gruppi, ad esempio eventi raggruppati per città. Una query di totallinea è una query di selezione che usa funzioni di aggregazione, ad esempio Group By, Min,Max,Count,Firste Last, 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 contenente i valori da riepilogare. Se si includono altri campi di output, ad esempio i nomi dei clienti quando si esegue il raggruppamento per tipo di evento, la query userà tali campi anche 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 totalitura 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 di funzionamento di una query complessa, valutare se è possibile suddividerla in una serie di query più semplici.
Creare una query di totali
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 concerto?
-
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 della tabella Events per aggiungere i campi alla griglia di struttura della query.
-
Nella griglia di struttura della query, nella riga Criteri del campo EventType, immettere <>Concerto.
Suggerimento: Per altri esempi di espressioni di 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 EventDate e quindi su Max.
-
Fare clic su Visualizza nel gruppo Risultati della scheda Struttura e quindi fare clic su Visualizzazione SQL.
-
Nella finestra SQL, alla fine della clausola SELECT, subito dopo la parola chiave AS, sostituire MaxDiDataEvento 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 Eventi e sulla tabella Clienti.
-
In Progettazione query fare doppio clic sui campi seguenti:
-
Nella tabella Eventi 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.