Automobili

Il problema

Schema relazionale

  • AUTOMOBILI(IdAutomobile, Marca, Modello, Tipo, Prezzo, Giorni_attesa)

SELECT

Quante automobili sono presenti

SELECT Count(*) AS [Numero automobili]
FROM AUTOMOBILI;

Quante automobili con specificati i giorni di attesa

SELECT Count(Giorni_attesa)
FROM AUTOMOBILI;

Quante automobili e quante con specificati i giorni di attesa

SELECT Count(*), Count(Giorni_attesa)
FROM AUTOMOBILI;

Quante automobili con i giorni di attesa NON specificati

SELECT Count(*)-Count(Giorni_attesa)
FROM AUTOMOBILI;
SELECT Count(*)
FROM AUTOMOBILI
WHERE Giorni_attesa IS NULL;

Quante automobili con il prezzo tra € 10.000 e € 20.000

SELECT COUNT(*)
FROM AUTOMOBILI
WHERE (Prezzo BETWEEN 10000 AND 20000);

Quante automobili con il prezzo in una certa fascia?

...

Quanti SUV della Fiat?

SELECT Count(*)
FROM AUTOMOBILI
WHERE (Marca = "Fiat") AND (Tipo = "SUV");

Il prezzo più basso

SELECT Min(Prezzo)
FROM AUTOMOBILI

Il prezzo minimo, medio e massimo

SELECT Min(Prezzo), Avg(Prezzo), Max(Prezzo)
FROM AUTOMOBILI

Il prezzo totale di SUV presenti

SELECT Sum(Prezzo)
FROM AUTOMOBILI
WHERE Tipo = "SUV"

GROUP BY

Numero automobili, per marca

SELECT Marca, Count(*)
FROM AUTOMOBILI
GROUP BY Marca;

Numero automobili con giorni di attesa noti, per marca

SELECT Marca, Count(Giorni_attesa)
FROM AUTOMOBILI
GROUP BY Marca;

Numero di automobili e media dei giorni di attesa, per marca

SELECT Marca, Count(Giorni_attesa), Avg(Giorni_attesa)
FROM AUTOMOBILI
GROUP BY Marca;

Prezzo medio, per tipo

SELECT Tipo, Avg(Prezzo)
FROM AUTOMOBILI
GROUP BY Tipo;

Prezzo medio delle FIAT, per tipo

SELECT Tipo, Avg(Prezzo)
FROM AUTOMOBILI
WHERE Marca = "Fiat" GROUP BY Tipo;

Numero medio di giorni di attesa delle compatte, per marca

SELECT Marca, Avg(Giorni_attesa)
FROM AUTOMOBILI
WHERE Tipo = "Compatta"
GROUP BY Marca;

Classifica delle marche di automobili per numero di modelli

SELECT Marca, Count(*)
FROM AUTOMOBILI
GROUP BY Marca
ORDER BY Count(*) DESC;

Tabella con diverse informazioni, ordinata per prezzo medio crescente

SELECT Marca, Min(Prezzo), Avg(Prezzo), Max(Prezzo),
       Count(*), Avg(Giorni_attesa)
FROM AUTOMOBILI
GROUP BY Marca
ORDER BY Avg(Prezzo);

HAVING

Prezzo medio per tipo (se almeno due modelli presenti)

SELECT Tipo, Avg(Prezzo), Count(*)
FROM AUTOMOBILI
GROUP BY Tipo
HAVING Count(*) >= 2;