Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Lavoratori, settori

Precedente
SUPERIORE
Successiva
Tratto da: AA. VV. SQL, il linguaggio per le basi di dati - HOEPLI

Schema relazionale

LAVORATORI(IDlavoratore, cognome, nome, settore, salario, mansione)
SETTORI(settore, descrizione)

LAVORATORI.settore è chiave esterna collegata a SETTORI.settore

Query

Totale dei salari per settore, TEMP1

SELECT settore, SUM(salario) as [Totale salari]
FROM LAVORATORI
GROUP BY settore;

Salario massimo per settore, TEMP2

SELECT settore, MAX(salario) as [Salario massimo]
FROM LAVORATORI
GROUP BY settore;

Salario medio per settore, TEMP3

SELECT settore, AVG(salario) as [Salario medio]
FROM LAVORATORI
GROUP BY settore;

Massimo tra le somme dei salari per settore

SELECT Max([Totale salari])
FROM TEMP1;

Massimo tra le somme dei salari per settore, senza TEMP1

SELECT Max([Totale salari])
FROM (SELECT SUM(salario) AS [Totale salari]
      FROM LAVORATORI
      GROUP BY settore);

Settore, salario massimo, quanti lavoratori con quel salario

SELECT TEMP2.settore, TEMP2.[Salario massimo], COUNT(*) AS [Numero lavoratori]
FROM LAVORATORI INNER JOIN TEMP2 ON LAVORATORI.settore = TEMP2.settore
WHERE LAVORATORI.salario = TEMP2.[Salario massimo]
GROUP BY TEMP2.settore, TEMP2.[Salario massimo];

oppure

SELECT TEMP2.settore, TEMP2.[Salario massimo], COUNT(*) AS [Numero lavoratori]
FROM LAVORATORI, TEMP2
WHERE (LAVORATORI.settore = TEMP2.settore) AND
      (LAVORATORI.salario = TEMP2.[Salario massimo])
GROUP BY TEMP2.settore, TEMP2.[Salario massimo];

oppure, senza TEMP2

SELECT TEMP2.settore, TEMP2.[Salario massimo], COUNT(*) AS [Numero lavoratori]
FROM LAVORATORI, (SELECT settore, MAX(salario) as [Salario massimo]
                  FROM LAVORATORI
                  GROUP BY settore) AS TEMP2
WHERE (LAVORATORI.settore = TEMP2.settore) AND
      (LAVORATORI.salario = TEMP2.[Salario massimo])
GROUP BY TEMP2.settore, TEMP2.[Salario massimo];

I settori con salario medio di almeno 1350 €

SELECT SETTORI.*, [Salario medio]
FROM SETTORI INNER JOIN TEMP3 ON SETTORI.settore = TEMP3.settore
WHERE [Salario medio] >= 1350;

oppure

SELECT SETTORI.*, [Salario medio]
FROM SETTORI INNER JOIN (SELECT settore, AVG(salario) as [Salario medio]
                         FROM LAVORATORI
                         GROUP BY settore) AS TEMP3
  ON SETTORI.settore = TEMP3.settore
WHERE [Salario medio] >= 1350;

Lavoratori, settori - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva