· 2 years ago · Jan 18, 2023, 08:40 PM
1DROP DATABASE IF EXISTS Pag243;
2
3CREATE DATABASE Pag243;
4
5USE Pag243;
6
7CREATE TABLE Dipendenti(
8 codice int PRIMARY KEY AUTO_INCREMENT,
9 cognome varchar(30) NOT NULL,
10 nome varchar(30) NOT NULL,
11 indirizzo varchar(50) NOT NULL,
12 citta varchar(30) NOT NULL,
13 provincia char(2) NOT NULL,
14 professione varchar 30 NOT NULL);
15CREATE TABLE Azienda(
16 codice int PRIMARY KEY AUTO_INCREMENT,
17 denominazione varchar(30) NOT NULL,
18 indirizzo varchar(50) NOT NULL,
19 p_iva int(11) NOT NULL);
20CREATE TABLE Versamento(
21 codice int PRIMARY KEY AUTO_INCREMENT,
22 causale varchar(30) NOT NULL,
23 importo int NOT NULL,
24 data date NOT NULL,
25 data_inizio date NOT NULL,
26 data_fine date NOT NULL);
27CREATE TABLE Reddito(
28 codice int PRIMARY KEY AUTO_INCREMENT,
29 importo int NOT NULL,
30 data_inizio date NOT NULL,
31 data_fine date NOT NULL);
32CREATE TABLE Trattenuta(
33 codice int PRIMARY KEY AUTO_INCREMENT,
34 importo int NOT NULL,
35 data_inizio date NOT NULL,
36 data_fine date NOT NULL);
37CREATE TABLE FamiliariCarico(
38 codice int PRIMARY KEY AUTO_INCREMENT,
39 cognome varchar(30) NOT NULL,
40 nome varchar(30) NOT NULL,
41 data_inizio date NOT NULL,
42 data_fine date NOT NULL);
43CREATE TABLE Annualita(
44 codice int PRIMARY KEY AUTO_INCREMENT,
45 reddito_annuale int NOT NULL,
46 tot_trattenute int NOT NULL,
47 n_fam_carico int date NOT NULL,
48 anno int(4) NOT NULL);
49
50
51/*3*/
52SELECT matricola,cognome,nome,professione,reddito_annuale
53FROM dipendenti AS d, annualita AS a
54WHERE d.codice = a.codiceAnnualita AND a.anno = YEAR(NOW());
55
56/*4*/
57SELECT denominazione,indirizzo
58FROM azienda
59WHERE codice = ["Inserisci il Codice dell'Azienda: "];
60/*5*/
61SELECT cognome,nome
62FROM dipendenti AS d INNER JOIN annualita AS a ON d.codice = a.codiceAnnualita
63WHERE a.reddito_annuale > ["Inserisci la cifra: "];
64
65/*6*/
66SELECT a.denominazione, a.indirizzo
67FROM azienda AS a INNER JOIN citta AS c ON a.codiceCitta = c.codice
68WHERE c.nome = ["Inserisci Comune: "];
69
70/*7*/
71SELECT d.cognome, d.nome, d.professione, a.reddito_annuale
72FROM dipendenti AS d INNER JOIN annualita AS a ON d.codice = a.codiceAnnualita
73WHERE d.professione = ["Inserisci Professione: "] AND a.reddito_annuale < ["Inserisci Valore: "];
74
75/*8*/
76SELECT cognome, nome
77FROM dipendenti as d
78WHERE d.professione = ["Inserisci Professione: "];
79
80/*9*/
81SELECT professione
82FROM dipendenti AS d, azienda AS a
83WHERE a.codice = ["Inserisci il Codice dell'Azienda:"];
84
85/*10*/
86SELECT DISTINCT professioni, reddito_annuale
87FROM dipendenti AS d INNER JOIN annualita AS a ON d.codice = a.codiceAnnualita
88WHERE a.reddito_annuale > ["Inserisci la cifra: "];
89
90/*11*/
91SELECT v.importo, v.data
92FROM versamenti AS v INNER JOIN azienda AS a
93WHERE a.codice = ["Inserisci il Codice dell'Azienda: "];
94
95/*12 impossibile farlo con le nostre conoscenze*/
96
97/*ammontare dell'imposta lorda, calcolata sul reddito
98secondo una percentuale prefissara, per tutti i dipendenti
99che svolgono una determinata professione*/
100
101/*13*/
102SELECT COUNT(*) AS numdipendenti
103FROM dipendenti AS d, azienda AS a
104WHERE d.codiceAzienda = a.codice;
105
106/*14*/
107SELECT MIN(reddito_annuale), MAX(reddito_annuale)
108FROM annualita;
109
110/*15*/
111SELECT AVG(an.reddito_annuale)
112FROM annualita AS an INNER JOIN dipendenti AS d ON an.codiceDipendente = d.codice
113WHERE d.professione = ["Inserisci Professione: "];
114
115/*16*/
116SELECT SUM(v.importo)
117FROM versamento AS v INNER JOIN azienda AS a ON v.codiceAzienda = a.codice
118WHERE a.codice = ["Inserisci il Codice dell'Azienda:"];
119
120/*17*/
121SELECT *
122FROM dipendenti
123ORDER BY cognome;
124
125/*18*/
126SELECT denominazione
127FROM azienda
128ORDER BY denominazione;
129
130/*19*/
131SELECT *
132FROM dipendenti AS d
133ORDER BY d.cognome;
134
135/*20 impossibile farlo con le nostre conoscenze*/
136/*elenco alfabetico dei dipendenti di un azienda con cognome, nome
137 e detrazioni totali spettanti in funzione dei familiari a carico,
138 conoscendo il valore unitario della detrazione per ogni familiare*/
139
140/*21*/
141SELECT d.cognome, d.nome, a.indirizzo
142FROM dipendenti AS d INNER JOIN azienda AS a ON d.codiceAzienda = a.codice
143ORDER BY d.cognome;
144
145/*22*/
146SELECT d.cognome, d.nome, an.reddito_annuale, SUM(v.importo)
147FROM dipendenti AS d INNER JOIN azienda AS az ON d.codiceAzienda = az.codice
148WHERE an.codiceDipendente = d.codice AND v.codiceDipendente = d.codice AND az.denominazione = ["Inserisci Azienda: "];
149
150/*23*/
151SELECT az.denominazione, COUNT(*) AS numdipendenti, r.importo,
152FROM dipendenti AS d INNER JOIN azienda AS az ON d.codiceAzienda = az.codice, reddito as r
153WHERE an.codiceDipendente = d.codice AND v.codiceDipendente = d.codice;
154
155/*24*/
156SELECT COUNT(*) AS numdipendenti, AVG(r.importo), a.indirizzo
157FROM dipendenti AS d INNER JOIN azienda AS a ON d.codiceAzienda = a.codice, reddito as r
158ORDER BY d.professione,a.codice;
159
160/*25*/
161
162SELECT az.denominazione, AVG(v.importo)
163FROM azienda AS az, versamenti AS v
164ORDER BY az.denominazione
165
166
167/*26*/
168SELECT d.cognome, d.nome, az.denominazione
169FROM dipendenti AS d, azienda AS az
170WHERE az.codice = ["Codice dell'Azienda1: "] OR ["Codice dell'Azienda2: "] OR ["Codice dell'Azienda3: "] OR ["Codice dell'Azienda4: "];
171
172/*27*/
173SELECT cognome, nome, professione
174FROM dipendenti
175WHERE professione NOT IN ('Impiegato', 'Dirigente')
176
177
178/*28*/
179SELECT cognome, professione
180FROM dipendenti
181WHERE cognome LIKE '%A' OR '%B' OR '%C' OR '%D' OR '%E' OR'%F' OR'%G' OR'%H' OR'%I' OR'%J' OR'%K' OR'%L' OR'%M';
182
183
184/*29*/
185SELECT d.cognome, d.nome, d.professione
186FROM dipendenti AS d, reddito AS r
187WHERE r.importo BETWEEN 1000 AND 3000
188
189/*30*/
190/*(settore nello schema che abbiamo fatto in classe non ha attributi, l'ho trattato come attributo di Azienda)*/
191
192/*Numero dei dipendenti raggruppati per professione, riferiti alle aziende che operano in uno tra cinque settori di attività prefissati*/
193SELECT COUNT(*) AS numdipendenti, d.professione, az.denominazione
194FROM dipendenti, azienda
195WHERE settore IN ('Ricerca','ControlloQualita','Logistica','Vendite','Contabilita')
196GROUP BY d.professione
197
198/*31*/
199 SELECT DISTINCT az.denominazione, AVG(v.importo) AS impostaMedia
200 FROM azienda AS az, versamenti AS v
201 WHERE impostaMedia > 1000
202
203/*32*/
204
205 SELECT DISTINCT az.denominazione, COUNT(*) AS numdipendenti
206 FROM azienda AS az INNER JOIN dipendenti AS d ON az.codice = d.codiceAzienda,
207 WHERE d.professione='Impiegato' AND numdipendenti > 10
208
209
210/*33*/
211 SELECT DISTINCT d.professione, AVG(r.importo) AS redditoMedio
212 FROM dipendenti AS d, reddito AS r
213 WHERE redditoMedio > 1000
214
215