![]() |
Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ comunicazione digitale (http://www.dsy.it/forum/forumdisplay.php?forumid=108)
-- Query laboratorio (http://www.dsy.it/forum/showthread.php?threadid=40394)
Query laboratorio
Ciao a tutti... qualcuno ha le query fatte a lezione lunedi??? io purtroppo ho perso il quaderno. grazie mille...
questi son quelli che ho io:
/* 1) Trovare i nomi delle pizze e i prezzi che costano meno di 6 euro */
SELECT nome, prezzo FROM pizza WHERE prezzo < 6
/* 2) Trovare gli ingredienti delle pizze */
SELECT DISTINCT ingrediente FROM ingrediente
/* 3) Trovare cognome, nome e telefono dei clienti che abitano in via dei Girasoli ordinati per nome e cognome */
SELECT cognomec, nomec, telc FROM cliente WHERE via = 'via dei Girasoli' ORDER BY cognomec, nomec
/* 4) Trovare il numero di telefono dei clienti che hanno effettuato un ordine
di almeno 5 pizze nell'ultima settimana, spendendo tra i 20 e i 50 euro*/
SELECT telc FROM ordine
WHERE qta <= 5 AND
importo BETWEEN 20 AND 50 AND
data > (CURRENT_DATE - 7)
/* 5) Trovare il nome delle pizze ordinate in data 4 settembre 2009 */
SELECT nome FROM pizza
NATURAL JOIN ordine
WHERE data = '2009-09-04'
/* 6) Trovare i nominativi dei clienti che hanno ordinato almeno una pizza che contenga le olive di ogni genere,
insieme alla data e all'importo dell'ordine. Presentare il risultato ordinato in modo decrescente rispetto all'importo e,
a parità di importo, in modo crescente per cognome e nome */
SELECT DISTINCT cognomec, nomec, data, importo FROM cliente
NATURAL JOIN ordine
NATURAL JOIN ingrediente
WHERE ingrediente LIKE '%olive%'
ORDER BY importo DESC, cognomec, nomec
/* 7) Trovare i clienti vicini di casa. Due clienti si dicono "vicini di casa" se abitano
nella stessa via e la differenza dei loro numeri civici è minore di 5*/
SELECT c1.*, c2.* FROM
cliente AS c1, cliente AS c2
WHERE c1.via = c2.via AND c1.telc < c2.telc AND
ABS(c1.nciv - c2.nciv) < 5
/* 8) Restituire i dati degli ordini per i quali si è applicato uno sconto(cioè gli ordini per cui l'importo è inferiore
al valore ottenuto moltiplicando la quantità ordinata per il relativo prezzo della pizza). Riportare anche lo sconto effettuato. */
SELECT ordine.*, (qta*prezzo)-importo AS sconto FROM pizza
NATURAL JOIN ordine
WHERE importo < qta*prezzo
/* 9) Produrre l'elenco, in ordine alfabetico, dei clienti. Per quelli che hanno effettuato almeno un ordine, riportare nell'elenco
le informazioni relative all'importo e alla data degli ordini effettuati. Gli ordini dello stesso cliente devono essere ordinati
dalla data più recente. */
SELECT cognomec, nomec, importo, data FROM cliente
NATURAL LEFT JOIN ordine
ORDER BY cognomec, nomec, data DESC
/* 10)Trovare il numero totale, l'importo totale e medio degli ordini degli utenti e quante pizze diverse hanno ordinato. */
SELECT count (*), SUM (importo), AVG (importo), count(distinct codp)
FROM ordine
/* 10bis)Trovare per ogni cliente, il numero totale,l'importo totale e medio dei suoi ordini e quante pizze diverse ha ordinato.*/
SELECT count (*), SUM (importo), AVG (importo), count(distinct codp)
FROM ordine
GROUP BY telc
/* 11) Trovare il nome delle pizze ordinate nel 2010 il cui importo totale ordinato sia stato inferiore alla somma del prezzo per la quantità ordinata.*/
SELECT nome, prezzo, sum(qta), sum (importo) FROM pizza
NATURAL JOIN ordine
WHERE data BETWEEN '2010-1-1' AND '2010-12-31'
GROUP BY nome, prezzo
HAVING sum(importo)<sum(prezzo*qta)
/* 12) Trovare il codice delle pizze con almeno 3 ingredienti. Restituire anche il numero di ingredienti.*/
SELECT codp, count(ingrediente) FROM ingrediente
GROUP BY codp
HAVING count(ingrediente) >= 3
/* 12bis) Trovare il codice delle pizze con il maggior numero di ingredienti. Restituire anche il numero di ingredienti.*/
SELECT DISTINCT codp, count(ingrediente)
FROM ingrediente
GROUP BY codp
HAVING count(ingrediente) >= ALL(
SELECT count(ingrediente) from ingrediente GROUP BY codp)
/* 13) Restituire in una singola colonna, cognome e nome dei clienti che hanno ordinato il minor numero di pizze margherita,
ordinando il risultato in base al cognome.*/
SELECT cognomec || ' ' || nomec FROM cliente
NATURAL JOIN ordine
NATURAL JOIN pizza
WHERE nome='margherita'
GROUP BY cognomec, nomec
HAVING sum(qta) <= ALL (
SELECT sum(qta) FROM cliente
NATURAL JOIN ordine
NATURAL JOIN pizza
WHERE nome='margherita'
GROUP BY cognomec, nomec
)
/* 14) Trovare i clienti che hanno ordinato (almeno una volta) la pizza capricciosa oppure ai quattro formaggi.*/
SELECT DISTINCT cognomec, nomec FROM cliente
NATURAL JOIN ordine
NATURAL JOIN pizza
WHERE nome='capricciosa' OR nome='quattro formaggi'
thank you very much...
prego!
queste sono quelle ke abbiamo fatto anke ieri (labA) vero?
Originally posted by yaone
queste sono quelle ke abbiamo fatto ieri (labA)
ho editato la richiesta della query 11 perché mancava un pezzo
| All times are GMT. The time now is 00:02. | Show all 7 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.