Dispensa DB Mercato del Lavoro Assumiamo come partenza che nella tabella Stato presente nel DB sono elencati tre codici, con i quali possiamo agevolmente sviluppare delle query che poi, a sua volta saranno utili per poter creare una query riassuntiva dove esplicitare formalmente l operazione esprimente i vari tassi. Introduzione 1) il primo comando è: Select Count (persona) as disoccupati From posizione Where stato = 2 2) Select Count (persona) as occupati From posizione Where stato = 1 3) Select Count (persona) as inattivi From posizione Where stato = 3 A questo punto proviamo a creare l indice: costruiamo una tabella dati_per_indici inseriamo tre campi durante la creazione a sua volta scriviamo sotto ciascun nome un valore: ID contatore ;Num_occupati = 2121 ; Num_disoccupati= 257 ; Num_Inattivi= 3329 ; Forza_Lavoro= 2378 (257+2121) ; creiamo la query Tasso d occupazione select Num_occupati/forza_lavoro = 0,8919 from dati_per_indici 1
Nota: nel DB ci vengono richiesti anche i paesi, così da poter sviluppare una tabella riassuntiva dei tassi. Quest ultima è riportata al termine della relazione dopo il potenziamento in schema R4. Preparazione dei dati Vogliamo creare una tabella occupati, nella tabella_occupati devono comparire i seguenti campi: sesso; fascia d età; tipologia di lavoro (dipendente o indipendente); durata del contratto (determinato o indeterminato); orario di lavoro (pieno o parziale); settore d appartenenza (Agricoltura, Industria in Senso Stretto, Costruzioni, Servizi); area geografica (Nord, Centro, Mezzogiorno). Adesso creiamo la tabella con i vari spazi vuoti, poi andremo a creare le query e a sua volta copieremo e incolleremo i dati (output) nella tabella. Tabelle Nuovo visualizzazione struttura Nominiamo i campi: ID Contatore Tipo Numerico Settore Numerico Durata Numerico Data Nascita Numerico Rifterritorio Numerico salva Tab_occupati Poi clicca la query e voce per voce o tutto insieme seleziona o incolla. 2
Query Occupati Select posizione.tipo, posizione.settore, posizione.durata, persona.datanascita, persona.sesso, persona.rifterritorio From persona inner join posizione on persona.cf=posizione.cf Where posizione.stato = 1 Al fine di ordinare i nostri output in base all ID creeremo la query: Select tipologialavoro.orario_lavoro, tab_occupati.id From tipologialavoro inner join tab_occupati on tipologialavoro.tipo=tab_occupati.tipo Order By tab_occupati.id Query In cerca c di occupazione ( Disoccupati ) Select persona.datanascita, persona.rifterritorio, persona.sesso From persona inner join posizione on persona.cf=persona.cf Where posizione.stato = 2 Query Inattivi Abbiamo già la tabella quindi non dobbiamo fare la query Adesso implementiamo nel nostro modello un opera di raffinazione denominata SCHEMA R1, la quale ci chiede di introdurre, prima nelle query, successivamente nelle tabelle, la colonna aggiuntiva datarif la quale si riferisce alla data in cui è stata condotta l analisi in riferimento alla posizione dei soggetti; per la tabella inattivi, in aggiunta alla precedente istanza, ci viene richiesto di aggiungere anche areageografica, per la tabella tassodoccupaz dovremmo aggiungere anche l anno al quale si riferisce. 3
Specifiche per SCHEMA R1 Query Occupati in schema R1 Select posizione.data From posizione Where posizione.stato = 1 Query In cerca di occupazione ( Disoccupati ) in schema R1 Select posizione.data From posizione Where posizione.stato = 2 Query Inattivi in Schema R1 Select posizione.data From posizione Where posizione.stato = 3 Specifiche per SCHEMA R2 Ci viene richiesto di raffinare le nostre tabelle con l inserimento di CF e datarif e poi, a loro volta, nominarli come chiavi. Query Occupati R2 Select posizione.cf From posizione Where posizione.stato=1 4
Andiamo adesso ad selezionare tutto il risultato, che in questo caso è una tabella, incollandolo successivamente nella tabella occupati. Query Disoccupati R2 Select posizione.cf From posizione Where posizione.stato=2 Andiamo adesso a selezionare tutto il risultato ( in questo caso una tabella) incollandolo successivamente nella tabella disoccupati. Query Inattivi R2 Select posizione.cf From posizione Where posizione.stato=3 Andiamo adesso a selezionare tutto il risultato ( in questo caso una tabella) incollandolo successivamente nella tabella inattivi. Nello Schema R2 ci viene richiesto di evidenziare due campi come chiave primaria per le tabelle Occupati, Disoccupati, Inattivi. Specifiche per SCHEMA R3 Nella tabella TipologiaLavoro dovremmo inserire ID come contatore, non lo facciamo perché la tabella tipologialavoro, già preimpostata nel DB, ha assunto tipo come contatore ed orario di lavoro è legato ad esso come classificatore in un altra tabella. Quindi, andando a 5
modificare la chiave, cambiamo anche lo schema di classificazione da noi ormai utilizzato. Specifiche per SCHEMA R4 La specifica in questione, per comodità, verrà riportata in seguito. QUERY Si devono creare delle Interrogazioni dalle specifiche precedentemente create. (punto 1) Calcolare i Tassi di Occupazione (già presenti ), disoccupazione e di Attività N.B. aggiungiamo nella tabella dati per indici il numero degli inattivi (3329) Tasso di Disoccupazione: Select num_disoccupati/forza_lavoro as tasso_disoccupazione =0,10 From dati_per_indici Tasso di Attività: Select forza_lavoro/inattivi as tasso_attività =0,71 From dati_per_indici 6
(punto 2) Distinguere i tassi suesposti per sesso degli individui. Procediamo con il primo Tasso Parziale(M-F) quello di Occupazione: Numero_Maschi_Occupati Select count(sesso) as num_m_occ From tab_occupati = 1099 Where sesso= m Numero_Femmine_Occupate Select count(sesso) as num_f_occ From tab_occupati = 1022 Where sesso= f Adesso aggiungiamo nella tabella dati_per_indici le colonne num_m_occ e num_f_occ e successivamente i due numeri appena trovati e in seguito creiamo il tasso: Tasso di Occupazione Parziale Maschi Select num_m_occ/forza_lavoro From dati_per_indici = 0,4621 Tasso di Occupazione Parziale Femmine Select num_f_occ/forza_lavoro From dati_per_indici = 0,4299 7
Il secondo; Tasso Parziale(M-F) quello di Disoccupazione ccupazione: Numero_Maschi_Disoccupati Select count(sesso) as num_m_disocc From tab_disoccupati = 136 Where sesso= m Numero_Femmine_Disoccupate Select count(sesso) as num_f_disocc From tab_disoccupati = 121 Where sesso= f Adesso aggiungiamo nella tabella dati_per_indici, le colonne num_m_disocc e num_f_disocc e successivamente i due numeri appena trovati, successivamente creiamo il tasso: Tasso di Disoccupazione Parziale Maschi Select num_m_disocc/forza_lavoro From dati_per_indici = 0,057 Tasso di Disoccupazione Parziale Femmine Select num_f_disocc/forza_lavoro From dati_per_indici = 0,050 8
Il Terzo; Tasso Parziale(M-F) quello di Inattività (non richiesto): Numero_Maschi_Inattivi Select count(sesso) as num_m_inattivi From tab_inattivi = 948 Where sesso= m Numero_Femmine_Inattive Select count(sesso) as num_f_inattive From tab_inattivi = 875 Where sesso= f Adesso aggiungiamo nella tabella dati_per_indici le colonne num_m_inattivi e num_f_inattive e successivamente i due numeri appena trovati e in seguito creiamo il tasso: Tasso di Inattività Parziale Maschi Select num_m_inattivi/num_inattivi From dati_per_indici = 0,2847 Tasso di Inattività Parziale Femmine Select num_f_inattive/num_inattivi From dati_per_indici = 0,2628 9
Il Quarto; Tasso Parziale(M-F) quello di Attività: Sappiamo che in un Economia il tasso di Attività e frutto della somma tra il numero di disoccupati e quello degli occupati, nominando questa addizione come Forza Lavoro (2378) di un economia. Numero_Maschi_Attivi Select num_m_occ + num_m_disocc as num_m_attivi From dati_per_indice = 1235 Numero_Femmine_Attive Select num_f_occ + num_f_disocc as num_f_attive From dati_per_indice = 1143 Adesso aggiungiamo nella tabella dati_per_indici, le colonne num_m_attivi e num_f_attive e successivamente i due numeri appena trovati e in seguito creiamo il tasso: Tasso di Attività Parziale Maschi Select num_m_attivi/forza_lavoro From dati_per_indici = 0,5193 10
Tasso di Attività Parziale Femmine Select num_f_attive/forza_lavoro From dati_per_indici = 0,4806 (punto 3) Distinguere gli Occupati in dipendenti e indipendenti. Prendiamo l output della tabella tipologia di lavoro. Vediamo che: Tipo e un classificatore che può essere utilizzato per il nostro scopo. Infatti prendendo i classificatori 1 e 3 nella tabella occupati, qui di seguito riportata, otteniamo il numero totale dei lavoratori dipendenti sia a tempo parziale(pt) che a tempo pieno(ft). Adesso opteremo per una query Union che ci darà come output il numero da noi desiderato. 11
Numero_Occupati_Dipendenti(pt+ft) Per correttezza analitica, riportiamo una vera e propria tabella come output: Select tab_occupati.cf, tab_occupati.data,tab_occupati.sesso, tab_occupati.settore, tab_occupati.durata, tab_occupati.datanascita, tab_occupati.rifterritorio, tab_occupati.orario_lavoro From tab_occupati Where tab_occupati=1 UNION Select tab_occupati.cf, tab_occupati.data,tab_occupati.sesso, tab_occupati.settore, tab_occupati.durata, tab_occupati.datanascita, tab_occupati.rifterritorio, tab_occupati.orario_lavoro From tab_occupati Where tab_occupati=3 12
Adesso ripetiamo la query utilizzando i classificatori 2 e 4, che si riferiscono ai lavoratori indipendenti sia a tempo parziale(pt) che a tempo pieno(ft). Select tab_occupati.cf, tab_occupati.data,tab_occupati.sesso, tab_occupati.settore, tab_occupati.durata, tab_occupati.datanascita, tab_occupati.rifterritorio, tab_occupati.orario_lavoro From tab_occupati Where tab_occupati=2 UNION Select tab_occupati.cf, tab_occupati.data,tab_occupati.sesso, tab_occupati.settore, tab_occupati.durata, tab_occupati.datanascita, tab_occupati.rifterritorio, tab_occupati.orario_lavoro From tab_occupati Where tab_occupati=4 (punto 4) Distinguere gli Occupati dipendenti in lavoratori a tempo determinato o indeterminato. Adesso prendiamo la tabella durata_contratto qui di seguito riportata dalla quale si evince che a noi interessano tutti gli occupati prima con durata = 1 (per i lavoratori a tempo determinato) e poi con durata = 2 (indeterminato). Qui possiamo osservare la comodità che l utilizzo del contatore ci offre: 13
Select tab_occupati.cf, tab_occupati.data,tab_occupati.sesso, tab_occupati.settore, tab_occupati.durata, tab_occupati.datanascita, tab_occupati.rifterritorio, tab_occupati.orario_lavoro From tab_occupati Where tab_occupati.durata=1 (SONO QUELLI A TEMPO DETERMINATO) E poi: Select tab_occupati.cf, tab_occupati.data,tab_occupati.sesso, tab_occupati.settore, tab_occupati.durata, tab_occupati.datanascita, tab_occupati.rifterritorio, tab_occupati.orario_lavoro From tab_occupati Where tab_occupati.durata=2 (SONO QUELLI A TEMPO INDERMINATO) N.B. il calcolo è agevole perché i lavoratori indipendenti non hanno il contratto infatti i campi sono NULL 14
(punto 5) Distinguere tra lavoro a tempo pieno o tempo parziale Utilizziamo anche questa volta la stessa sintassi della UNION precedente questa volta però nella preposizione Where tab_occupati.tipo=1(così otteniamo i lavoratori part time dipendenti) + tab_occupati.tipo=2 (così otteniamo i lavoratori part time indipendenti) Quindi sempre con le due tabelle: 15
Select tab_occupati.cf, tab_occupati.data,tab_occupati.sesso, tab_occupati.settore, tab_occupati.durata, tab_occupati.datanascita, tab_occupati.rifterritorio, tab_occupati.orario_lavoro From tab_occupati Where tab_occupati.tipo=1 UNION Select tab_occupati.cf, tab_occupati.data,tab_occupati.sesso, tab_occupati.settore, tab_occupati.durata, tab_occupati.datanascita, tab_occupati.rifterritorio, tab_occupati.orario_lavoro From tab_occupati Where tab_occupati.tipo=2 (COSI ABBIAMO OTTENUTO I LAVORATORI TOTALI PART-TIME) Adesso per i full-time (tempo pieno) Select tab_occupati.cf, tab_occupati.data,tab_occupati.sesso, tab_occupati.settore, tab_occupati.durata, tab_occupati.datanascita, tab_occupati.rifterritorio, tab_occupati.orario_lavoro From tab_occupati Where tab_occupati.tipo=3 UNION Select tab_occupati.cf, tab_occupati.data,tab_occupati.sesso, tab_occupati.settore, tab_occupati.durata, tab_occupati.datanascita, tab_occupati.rifterritorio, tab_occupati.orario_lavoro From tab_occupati Where tab_occupati.tipo=4 (COSI ABBIAMO OTTENUTO I LAVORATORI TOTALI FULL-TIME) 16
(punto 6) Distinguere i lavoratori Dipendenti per settore di appartenenza Per risolvere questo quesito creiamo una nuova tabella con tutte le voci della tab_occupati, quindi andiamo su tabella e poi nuova, struttura e nei vari campi inseriamo le voci: 17
Cf Data Sesso Settore Durata Datanascita Rifterritorio Orario_lavoro numerico data/ora testo numerico numerico data/ora numerico testo Salva tutto e questa diventa Tab_dipendenti, poi andiamo a prendere l output della tabella occupati compreso il settore, e lo incolliamo nella nuova tabella! Adesso ci serve la tabella settore qui di seguito riportata: Da questa si evince l utilità dei classificatori 1,2,3,4 nelle varie query che creeremo: 18
la prima: (salvata come query: tab_dipendenti_agricoltura) Select tab_dipendenti.cf, tab_dipendenti.data,tab_dipendenti.sesso, tab_dipendenti.durata, tab_dipendenti.datanascita, tab_dipendenti.rifterritorio, tab_dipendenti.orario_lavoro From tab_dipendenti Where tab_dipendenti.settore=1 (AGRICOLTURA) N.B. non riportiamo nel select il campo tab_dipendenti.settore perché è ciò che stiamo cercando. la seconda: (salvata come query: tab_dipendenti_industria) Select tab_dipendenti.cf, tab_dipendenti.data,tab_dipendenti.sesso, tab_dipendenti.durata, tab_dipendenti.datanascita, tab_dipendenti.rifterritorio, tab_dipendenti.orario_lavoro From tab_dipendenti Where tab_dipendenti.settore=2 (INDUSTRIA) la terza: (salvata come query: tab_dipendenti_servizi) Select tab_dipendenti.cf, tab_dipendenti.data,tab_dipendenti.sesso, tab_dipendenti.durata, tab_dipendenti.datanascita, tab_dipendenti.rifterritorio, tab_dipendenti.orario_lavoro From tab_dipendenti Where tab_dipendenti.settore=3 (SERVIZI) la quarta: (salvata come query: tab_dipendenti_costruzioni) Select tab_dipendenti.cf, tab_dipendenti.data,tab_dipendenti.sesso, tab_dipendenti.durata, tab_dipendenti.datanascita, tab_dipendenti.rifterritorio, tab_dipendenti.orario_lavoro From tab_dipendenti Where tab_dipendenti.settore=4 (COSTRUZIONI) 19
Analizziamo ora, i dati sull occupazione,disoccupazione per Francia, Germania, Inghilterra, USA, Giappone per sesso e totali: creiamo una nuova tabella con i seguenti campi: ID contatore Paese testo Occ_Masc numerico Occ_Fem numerico Occ_Tot numerico Disocc_Masc numerico Disocc_Fem numerico Disocc_Tot numerico Forza_lav_Masc numerico Forza_lav_Fem numerico Forza_lav_Tot numerico Salviamo come dati_ocse Inseriamo i dati che abbiamo ottenuto da internet alla fonte: http://stats.oecd.org/wbos/default.aspx?datasetcode=lfs_d il sito appunto dell OECD statistics. Adesso possiamo agevolmente creare le query sulla nostra tabella: Tasso di Occupazione Totale Francia (=0,9017) Select dati_ocse.occ_tot/dati_ocse.forza_lav_tot AS tasso_occ_francia From dati_ocse Where dati_ocse.paese= francia Tasso di Occupazione Maschile Francia (=0,4883) Select dati_ocse.occ_masc/dati_ocse.forza_lav_tot AS tasso_occ_masc_francia From dati_ocse Where dati_ocse.paese= francia Tasso di Occupazione Femminile Francia (=0,4133) Select dati_ocse.occ_fem/dati_ocse.forza_lav_tot AS tasso_occ_fem_francia From dati_ocse Where dati_ocse.paese= francia 20
Tasso di Occupazione Totale Germania (=0,8884 8884) Select dati_ocse.occ_tot/dati_ocse.forza_lav_tot AS tasso_occ_germania From dati_ocse Where dati_ocse.paese= germania Tasso di Occupazione Maschile Germania (=0,4890) Select dati_ocse.occ_masc/dati_ocse.forza_lav_tot AS tasso_occ_masc_germania From dati_ocse Where dati_ocse.paese= germania Tasso di Occupazione Femminile Germania (=0, 0,3993 3993) Select dati_ocse.occ_fem/dati_ocse.forza_lav_tot AS tasso_occ_fem_germania From dati_ocse Where dati_ocse.paese= germania Tasso di Occupazione Totale GB (=0,9541) Select dati_ocse.occ_tot/dati_ocse.forza_lav_tot AS tasso_occ_gb From dati_ocse Where dati_ocse.paese= gb Tasso di Occupazione Maschile GB (=0,5102) Select dati_ocse.occ_masc/dati_ocse.forza_lav_tot AS tasso_occ_masc_gb From dati_ocse Where dati_ocse.paese= gb Tasso di Occupazione Femminile GB (=0,4439) ( Select dati_ocse.occ_fem/dati_ocse.forza_lav_tot AS tasso_occ_fem_gb From dati_ocse Where dati_ocse.paese= gb 21
Tasso di Occupazione Totale USA (=0,9491) Select dati_ocse.occ_tot/dati_ocse.forza_lav_tot AS tasso_occ_usa From dati_ocse Where dati_ocse.paese= USA Tasso di Occupazione Maschile USA (=0,5087) Select dati_ocse.occ_masc/dati_ocse.forza_lav_tot AS tasso_occ_masc_usa From dati_ocse Where dati_ocse.paese= USA Tasso di Occupazione Femminile USA (=0,4403) ( Select dati_ocse.occ_fem/dati_ocse.forza_lav_tot AS tasso_occ_fem_usa From dati_ocse Where dati_ocse.paese= USA Tasso di Occupazione Totale Giappone (=0,9557) Select dati_ocse.occ_tot/dati_ocse.forza_lav_tot AS tasso_occ_giappone From dati_ocse Where dati_ocse.paese= giappone Tasso di Occupazione Maschile Giappone (=0,5596) Select dati_ocse.occ_masc/dati_ocse.forza_lav_tot AS tasso_occ_masc_giappone From dati_ocse Where dati_ocse.paese= giappone Tasso di Occupazione Femminile Giappone (=0,3960) ( Select dati_ocse.occ_fem/dati_ocse.forza_lav_tot AS tasso_occ_fem_giappone From dati_ocse Where dati_ocse.paese= giappone 22
Maschere Abbiamo optato, per una modalità di maschere, che desse la possibilità di visualizzare i dati inerenti le seguenti tabelle: Persona Posizione Dipendenti Disoccupati Occupati Lavoratori industria Lavoratori agricoltura Lavoratori servizi Lavoratori costruzioni Il nostro obiettivo ero quello di poter visionare i dati agevolmente, sia per una persona esperta, che per una persona inesperta o semplice addetto. Per far questo siamo andati su maschere e poi la creazione guidata ci ha portato alla costruzione materiale della maschera. Qui di seguito riportiamo la schermata iniziale delle maschere con gli elementi aggiuntivi grafici, con i quali abbiamo potuto migliorare e in qualche caso perfezionare le maschere: 23
24
25
26
27
28
Report Il report è il consuntivo del nostro lavoro, quindi molta attenzione è stata dedicata alla cura di questa parte del progetto. Nel far ciò abbiamo estrapolato dalle tabelle i dati più significativi e attraverso la creazione guidata siamo giunti alla compilazione del report. Qui di seguito mostriamo alcuni dei nostri report più significativi: 29
30
31
32