[aiuto!] Sql Clicca QUI per vedere il messaggio nel forum |
ste182 |
ciao ragazzi, voi come risolvereste questo esercizio?
Vendita(CodVend,CodCli,CodProd,Qta)
Venditore(Codice,Nome,Città')
Cliente(CodiceCli,NomeCli,CittàCli)
determinare il venditore di Verona che ha venduto la maggior quantità complessiva di prodotti nella base di dati..
io ho pensato di fare la somma delle Qta raggruppandoli per CodVend così:
SELECT SUM(Qta)
FROM Vendita
GROUP by CodVend
così ricavo una tabella con la somma delle quantità per ogni venditore(CodVend).. poi però come faccio a prendere solo il venditore di verona con il max di quantità venduta??? |
gae84 |
penso sia così, anche se magari c'è qualke errore..... come idea generale cmq devi dirgli di ritornare il venditore per il quale nn ci sono altri venditori con vendite personali maggiori alle sue, oppure, detto in altra maniera, devi trovare il venditore che ha venduto una quantità di articoli maggiore di tutte le altre vendite personali all'interno del database
SELECT CodVend AS cod, SUM(QTA) AS tot FROM Vendita WHERE CodVend=cod AND SUM(QTA) > ALL (
SELECT SUM(QTA) FROm Vendita GROUP BY CodVend
) |
ste182 |
Originally posted by gae84
penso sia così, anche se magari c'è qualke errore..... come idea generale cmq devi dirgli di ritornare il venditore per il quale nn ci sono altri venditori con vendite personali maggiori alle sue, oppure, detto in altra maniera, devi trovare il venditore che ha venduto una quantità di articoli maggiore di tutte le altre vendite personali all'interno del database
SELECT CodVend AS cod, SUM(QTA) AS tot FROM Vendita WHERE CodVend=cod AND SUM(QTA) > ALL (
SELECT SUM(QTA) FROm Vendita GROUP BY CodVend
)
non capisco la condizione WHERE CodVend=cod
cod l'hai definito da CodVend quindi sarà sempre uguale... no? |
ste182 |
ho pensato di fare così, ditemi se può funzionare:
SELECT CodVend as Codice, SUM(Qta) as Totale
FROM Vendita
WHERE CodVend in
(
SELECT Codice as CodVend, SUM(Qta)
FROM Venditore, Vendita
WHERE Città= "Verona" AND SUM(Qta) > ALL (SELECT SUM(Qta) FROM VENDITA GROUP by CodVend)
) |
ste182 |
oppure meglio questo:
SELECT Codice
FROM Venditore INNER JOIN Vendita ON Codice=CodVend
WHERE Venditore.Città="Verona" AND Qta = MAX(SELECT SUM(Qta) FROM Vendita GROUP by CodVend)
che dite?? sto sparando solo cavolate o potrebbe avere senso??:?:D |
ste182 |
ennò cavoli non và bene.. ragazzi aiutoooooooooooooo!! |
Counter65 |
SELECT CodVend AS cod, SUM(QTA) AS tot FROM Vendita WHERE CodVend=cod AND SUM(QTA) >= ALL (
SELECT SUM(QTA) FROm Vendita GROUP BY CodVend
)
quello che ha scritto gae è giusto manca solo l'uguale dopo il maggiore |
morte2097 |
scusa non vorrei dire una cavolata ma sum(qta) >=all dovresti porlo nell'having non nel where e poi devi confrontarli con quelli della città di verona , secondo me sarebbe
SELECT Vendita.CodVend , SUM(Qta)
FROM Vendita,Venditore
WHERE Vendita.CodVend = Venditore.Codice AND
Venditore.città= "verona"
GROUP BY Vendita.CodVend
HAVING SUM(Qta) >= ALL (
SELECT SUM(Qta)
FROM Vendita,Venditore
WHERE Vendita.CodVend = Venditore.Codice
AND Venditore.città= "verona"
GROUP BY Vendita.CodVend |
morte2097 |
non ho kiuso la parentesi tonda della query interna! |
morte2097 |
si va bene comunque, un pò più complessa da vedere ma va benissimo! |
|
|
|