Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379

    sql e php: media più alta

    scrivo perchè non ho proprio la più pallida idea di come realizzare questa cosa, cioè una vaga idea ce l'ho...


    ho una tabella con i seguenti campi:
    -utente
    - voto

    in cui ovviamente ci sono inseriti più utenti, e più utenti possono avere più voti (da 0 a 10)
    come faccio a tirare fuori l'utente con più di 10 voti e con la media più alta?

    ho provato usando nella query AVG e GROUP by utente, settando il limite a 1 ma non riesco a ottenere quello che cerco.
    grazie a tutti in anticipo
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: sql e php: media più alta

    Originariamente inviato da diaz
    scrivo perchè non ho proprio la più pallida idea di come realizzare questa cosa, cioè una vaga idea ce l'ho...


    ho una tabella con i seguenti campi:
    -utente
    - voto

    in cui ovviamente ci sono inseriti più utenti, e più utenti possono avere più voti (da 0 a 10)
    come faccio a tirare fuori l'utente con più di 10 voti e con la media più alta?

    ho provato usando nella query AVG e GROUP by utente, settando il limite a 1 ma non riesco a ottenere quello che cerco.
    grazie a tutti in anticipo
    Mi sembra che hai fatto tu ciò che ti serve

    codice:
    select utente,avg(voto) as media
    from tabella
    group by utente
    having count(voto) > 10
    order by media desc
    limit 1

  3. #3
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    grazie... mi sfuggiva l'having, ora provo
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  4. #4
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    la query funziona benino, quello che non va è il limite minimo di 15
    quindi forse qualche a che vedere con having
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  5. #5
    Originariamente inviato da diaz
    la query funziona benino, quello che non va è il limite minimo di 15
    quindi forse qualche a che vedere con having
    Da dove viene quel limite minimo di 15 .... ??? :master:


    qualcos'altro mi suona male.... la media piu' alta riferita a che? piu' di dieci, ma un voto medio di valore 7 su 20 voti e' diverso da un voto medio di 7 su 10 voti. Nel senso che piu' sono i voti piu' la media sara' stabile e reale, mentre sul minimo potrebbe essere falsata da una serie particolarmente positiva o negativa. Ma dipende da quello che devi calcolare. Ovviamente.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    allora ora cerco di spiegarmi al meglio....

    ho a disposizione una tabella questi campi:
    -utente
    -voto

    qualche esempio:
    codice:
    utente   voto
    55      3
    55     10
    16      8
    67      6
    16      7
    16      5
    con la query vorrei visualizzare l'id utente che possiede la media di voti più alta, e che però debba avere almeno 3 voti (a me serve 15, ma per l'esempio facciamo 3)
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  7. #7
    Originariamente inviato da diaz
    con la query vorrei visualizzare l'id utente che possiede la media di voti più alta, e che però debba avere almeno 3 voti (a me serve 15, ma per l'esempio facciamo 3)
    La query che ti hanno indicato dovrebbe andare bene. Metti il valore che credi opportuno al posto di quel 10.

    Se vuoi stampare anche il tot dei voti, metti il count() nella SELECT

    codice:
    select utente, avg(voto) as media,
    count(*) as totale
    from tabella
    group by utente
    having totale >= 3
    order by media desc

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    alla fine ho usato una query ricorsiva per semplificare se così si può dire
    perchè la query che avevo prima si andava ad unire ad altre due tabelle con l'uso di leftjoin e presentava anche un where e forse per questo come totale mi tirava fuori un valore stranissimo

    ora funge, grazie
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

  9. #9
    va .. beh!

    ma se uno fa il verduriere e gli chiedono un kg. di patate dara' un kg. di patate. Se poi di rimando il cliente dice che le patate non vanno bene perche' lui voleva fare i "saltimbocca alla romana" ... se tu fossi il verduriere ... cosa risponderesti???


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di diaz
    Registrato dal
    Apr 2000
    residenza
    Berlin
    Messaggi
    379
    risponderei gentilmente dicendo che ha sbagliato negozio
    E da quel giorno, se andavo da qualche parte, io ci andavo correndo!

    Tweeting @apphancer | Views my own – except when I say things I don’t really think.

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.