Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30

Discussione: Query Totale Vendite

  1. #1

    Query Totale Vendite

    Salve,
    qualcuno mi da una mano per fare questa cosa..?
    Allora, ho una tabella vendite con queste colonne:
    id, idMarca, idProdotto, prezzo

    Di tutte le righe, dovrei selezionare gli idMarca il cui totale è maggiore rispetto agli altri..
    Mi spiego meglio, supponiamo questi record:
    id, idMarca, idProdotto, prezzo
    1, 1, 1, 1
    2, 1, 2, 5
    3, 2, 3, 2
    4, 2, 4, 1
    5, 2, 5, 2

    In questo caso, il totale dell'idMarca 1 sarebbe di 6 (5 + 1), mentre per l'idMarca 2 sarebbe di 5, quindi io vorrei che mi restituisse i valori 1(idMarca), 6(totale prezzo) e 2, 5.
    Ovviamente il tutto dovrei farlo su diverse migliaia di righe e su centinaia di idMarca, quindi dovrei selezionare i primi 5 per stilare una classifica dei marchi che portano più incassi.
    Spero possiate aiutarmi

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non vedo la difficoltà.

    select idmarca, sum(prezzo)
    from tabella
    group by idmarca
    order by sum(prezzo)
    limit 0, 5
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Non vedo la difficoltà.

    select idmarca, sum(prezzo)
    from tabella
    group by idmarca
    order by sum(prezzo)
    limit 0, 5
    Grazie, unico errore è che mancava il DESC sull'ORDER..
    E se volessi avere lo stesso identico risultato ma ho solo gli idProdotto, che poi sono collegati in un altra tabella agli idMarca..?

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    errore mi sembra una parola un po' esagerata. No ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Quote Originariamente inviata da badaze Visualizza il messaggio
    errore mi sembra una parola un po' esagerata. No ?
    Mammamia come sei permaloso.. Dimenticanza? Relax..
    Comunque ora ho provato con questa query ma non arriva alla fine della sua esecuzione.. Vai, crocifiggimi
    codice:
    SELECT prodotti.idMarca, SUM(vendite.prezzo) FROM vendite INNER JOIN prodotti GROUP BY prodotti.idMarca ORDER BY SUM(vendite.prezzo) LIMIT 0, 5

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ti manca la clausola ON nell'INNER JOIN che ti consente di legare le due tabelle. Come hai scritto ti fa un prodotto cartesiano
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Ti manca la clausola ON nell'INNER JOIN che ti consente di legare le due tabelle. Come hai scritto ti fa un prodotto cartesiano
    Ma come sei drastico..! E' stato solo un piccolo errore di distrazione..
    Comunque, si può alleggerire in qualche modo? Perchè mi impiega oltre mezzo secondo ad eseguire la query in locale..
    codice:
    SELECT prodotti.idMarca, SUM(vendite.prezzo) FROM vendite INNER JOIN prodotti ON vendite.idProdotto = prodotti.id GROUP BY prodotti.idMarca ORDER BY SUM(vendite.prezzo) DESC LIMIT 0, 5

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Se hai idMarca in vendite allora la join non serve. Forse ti manca un indice.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    No, idMarca è solo in prodotti, in vendite ho solo l'idProdotto, che è presente anche nella tabella prodotti ovviamente

  10. #10
    codice:
    SELECT 
       prodotti.idMarca, 
       SUM(vendite.prezzo) 
    FROM 
       vendite 
       INNER JOIN prodotti ON vendite.idProdotto = prodotti.id 
    GROUP BY 
       prodotti.idMarca 
    ORDER BY 
       SUM(vendite.prezzo) DESC 
    LIMIT 
       0, 5
    come ha detto badaze, controlla di avere gli indici sui campi in JOIN. A meno che non stamo parlando di milioni di righe, al che mezzo secondo in locale ci sta

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.