Visualizzazione risultati 1 fino 2 di 2

Discussione: filtro mysql per sottoinsiemi

  1. #1
    unoicsdue non è connesso Neofita
    Data registrazione
    13-07-2013
    Messaggi
    5

    Predefinito filtro mysql per sottoinsiemi

    ho una tabella del tipo

    id/ utente / importo
    1 / mario / 200
    2 / mario / 150
    3 / mario / 100
    4 / mario / 50
    5 / agnese/ 100
    6 / agnese / 100
    7 / paolo/ 300
    8 / paolo/200
    9 / paolo/ 100
    10 / paolo/ 50
    11 / giovanni/ 100
    12 / giacomo/ 100


    e vorrei ricavare, per ognuno degli utenti, i primi 3 elementi (ovvero quelli con l'importo più alto)
    e trovarmi quindi con una tabella

    utente / totaleimporto
    mario 450
    agnese 200
    paolo 600
    giovanni 100
    giacomo 100


    qualcuno mi da dei suggerimenti per costruire la query?

  2. #2
    Guest

    Predefinito

    Ecco qua
    (Sostituisci tutte e 4 le volte "tabella" con il nome reale)
    Codice:
    SELECT
        utente,
        SUM(importo) AS totaleimporto
    FROM
        tabella
    WHERE (
        SELECT
            COUNT(*)
        FROM
            tabella AS t
        WHERE
            t.utente = tabella.utente
            AND t.importo >= tabella.importo
    ) <= 3
    GROUP BY
        utente
    ORDER BY
        id

    In pratica questa query (che in realtà sono due query annidate) prende i valori maggiori grazie a t.importo >= tabella.import, dei quali sceglie solo i primi tre (<= 3).
    Del risultato somma i valori (SUM(importo) AS totaleimporto) raggruppandoli in base all'utente (GROUP BY utente)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •