SQL (Structured Query Language)

Un corso completo sul linguaggio SQL (Structured Query Language): definizioni, esempi ed esercizi

Clausole SQL - Esercizi capitolo 4

Capitolo 4

ESERCIZI

1) È corretta questa query? se giusta o sbagliata, spiegare il perché.

SELECT COGNOME, AVG(STIPENDIO), REPARTO

FROM DIPENDENTI

WHERE REPARTO = ‘VENDITE’

ORDER BY COGNOME

GROUP BY REPARTO;

2) Si può applicare la clausola ORDER BY a una colonna che non appare fra quelle citate nell’istruzione

SELECT ?

3) Quando usiamo la clausola HAVING, dobbiamo necessariamente utilizzare anche la clausola GROUP BY ?

4) Si può applicare l’istruzione SELECT a una colonna che non appare fra quelle citate nella clausola GROUP BY ?

5) Scrivere una query che ci permetta di estrapolare da una tabella contenente dati su libri, quei generi in cui non sono presenti libri con prezzo inferiore o uguale a £10.000.

Quanto detto, significa in parole più semplici, che dobbiamo visualizzare quei generi dove non ci sono libri il cui costo sia uguale o inferiore a £ 10.000. Se ad esempio il libro Le Crociate che appartiene al genere di Storia costa £ 9.500, non dovrà apparire nella select il genere Storia.

LIBRI (TITOLO, AUTORE, GENERE, PREZZO, EDITORE)

6) Se applicassimo la seguente select

SELECT DIVISIONE

FROM DIPENDENTI

GROUP BY DIVISIIONE

HAVING MAX(STIPENDIO) < 4 800 000 ;

alla tabella DIPENDENTI, indicare quali sarebbero le divisioni estrapolate.

DIPENDENTI
NOME DIVISIONE STIPENDIO GIORNI_MUTUA FERIE_GODUTE
ROSSI VENDITE 2 000 000 33 5
BIANCHI VENDITE 2 100 000 1 0
BRUNI RICERCA 3 300 000 0 9
VERDI ACQUISTI 1 800 000 32 20
GIALLI RICERCA 4 800 000 0 0
NERI RICERCA 3 400 000 2 1
MANCINI AMMINISTRAZIONE 2 400 000 9 24
MARCHETTI VENDITE 2 000 000 99 12

7) Scrivere una select che ci permetta di estrapolare, dalla tabella DIPENDENTI, le divisioni in cui non

compaiono lavoratori che non hanno goduto di giorni di ferie. Ovvero, bisogna visualizzare solo quelle

divisioni dove non c’è neanche un dipendente con zero giorni di ferie.

8) Scrivere una query che, dalla tabella ASSEGNI, ci permette di estrapolare i beneficiari che gli è stato

versato perlomeno un assegno di cifra superiore alle 400 000.

ASSEGNI
ASSEGNO BENEFICIARIO IMPORTO NOTE
1 COMPUTER SHOP 50 000 DISCHETTI E CD-ROM
2 LIBRERIE CULTURA 245 000 LIBRI, CANCELLERIA
3 COMPUTER SHOP 200 000 TELEFONO CELLULARE
4 BIOGAS SRL 88 000 GAS
5 SUPERMARCHET GS 150 000 ALIMENTARI
16 ASSICURAZIONI ASSO 425 000 ASSICURAZIONE CASA
17 GAS S.P.A. 25 000 GAS
21 COMPUTER SHOP 34 000 CONTROLLER
20 ABITI BELLA 110 000 PANTALONI
9 ABITI BELLA 224 000 COMPLETO DONNA
8 COMPUTER SHOP 134 000 JOYSTICK

9) Scrivere una query che, dalla tabella ASSEGNI, ci permette di estrapolare i beneficiari la cui media degli importi degli assegni versati sia superiore alle 300 000. La lista dei beneficiari deve apparire ordinata in modo discendente.

Soluzioni agli esercizi del Capitolo 4

Autore: Art Net

Condividi questo articolo su

15 Commenti

  1. SAlve, quindi non esiste una funzione come p.e. in Excel, che estragga alcuni caratteri a destra o sinistra?
    Ho provato cn right(nome, 3) ma non lo riconosce

    Rispondi al Commento
  2. SELECT COUNT (*)
    Buongiorno

    FROM IMPIEGATO
    WHERE DIPARTIMENTO = ‘PRODUZIONE’

    genera il seguente errore:
    “The data types text and varchar are incompatible in the equal to operator”.

    Invece, sostituendo con WHERE DIPARTIMENTO LIKE ‘PRODUZIONE’, la query funziona.

    Rispondi al Commento
  3. Ho imparato alcune cose buone qui. Certamente merita il bookmarking per la rivisitazione.

    Mi chiedo quanti sforzi hai impostato per creare questo tipo di fantastico sito informativo.

    Rispondi al Commento
  4. guida molto interessante grazie se ci fossero anche le istruzioni per creare la tabella sarebbe completa secondo me

    Rispondi al Commento
  5. Grazie per la guida. Semplice, interessante ed utile.
    Vorremmo segnalare due cose. Un errore ed un dubbio.
    Errore:
    SELECT DIVISIONE, AVG(STIPENDIO)
    FROM DIPENDENTI
    HAVING AVG(STIPENDIO) > 2200000;

    manca la “group by DIVISIONE” prima della HAVING.

    Di conseguenza il dubbio sul punto 6.
    HAVING non è necessario che venga posta dopo la clausola GROUP BY.
    Sicuri?

    Rispondi al Commento
  6. Guida Molto utile, segnalo un errore nella query 9, capitolo 2, delle soluzioni:
    PrezzoIngrosso è moltiplicato * 1,5 ma si chiedeva un aumento del 15%, ciò significa moltiplicare * 1,15

    Rispondi al Commento
  7. Veramente complimenti, una guida dettagliata, semplice e adatta a tutti 🙂

    FortyZone

    Rispondi al Commento
  8. Davvero complimenti ragazzi. La prima guida che per chi parte da zero è manna dal cielo…PERFETTA!!

    Rispondi al Commento
  9. nel punto 8 la soluzione non dovrebbe essere con HAVING MIN(IMPORTO) > 400 000; cioè: SELECT BENEFICIARI FROM ASSEGNI GROUP BY BENEFICIARIO HAVING MIN(IMPORTO) > 400 000;

    Rispondi al Commento
  10. un ottimo Manuale unico errore (se vogliamo chiamarlo cosi) i tipi di dati Char(5) number(5,2) cosa sono e come si usano

    Rispondi al Commento
  11. Complimenti ottimo sito! fatto davvero bene. Grazie!

    Rispondi al Commento

Invia commento

Il tuo indirizzo email non sarà pubblicato.