Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2017
    residenza
    Formello
    Messaggi
    5

    Somma dei migliori X risultati HELP

    Salve ho una vista con "i migliori punteggi ottenuti dai singoli utenti":
    Punti username ID_partita
    3 user1 1301
    3 user1 1366
    2 user1 1375
    2 user1 1424
    2 user1 1254
    2 user1 1270
    1 user1 1278
    1 user1 1335
    1 user1 1432
    1 user1 1405
    2 user2 1344
    1 user2 1405
    1 user3 1375
    3 user4 1405
    2 user4 1394
    3 user5 1270
    2 user5 1293
    2 user5 1335
    2 user5 1301
    2 user5 1366
    2 user5 1440
    2 user5 1386


    Se voglio fare la somma di tutti i punteggi per ogni utente va bene




    SELECT SUM(Punti) as Punti
    ,[username]
    FROM [vista]
    GROUP BY [username]


    ma se volessi fare la somma dei migliori 10 punteggi di ogni utente? Come dovrei fare? Posso farlo da qui o sbaglio a creare questa vista con tutti i punteggi ottenuti dovrei creare questa in maniera diversa?


    Grazie
    informaticaromanord.it

  2. #2
    che db usi? siamo sotto natale, siamo tutti più buoni, rispettiamo il regolamento

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2017
    residenza
    Formello
    Messaggi
    5
    Quote Originariamente inviata da optime Visualizza il messaggio
    che db usi? siamo sotto natale, siamo tutti più buoni, rispettiamo il regolamento
    ops scusa [SQL Server] su un server windows 2012
    informaticaromanord.it

  4. #4
    puoi quindi creare una semplice SP che

    1. scriva su una tmp i migliori 10 risultati per ogni utente
    2. faccia la somma sulla TMP come hai fatto sulla completa

    potresti anche usare delle subquery, ma la SP è più performante perché viene compilata

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2017
    residenza
    Formello
    Messaggi
    5
    Quote Originariamente inviata da optime Visualizza il messaggio
    puoi quindi creare una semplice SP che

    1. scriva su una tmp i migliori 10 risultati per ogni utente
    2. faccia la somma sulla TMP come hai fatto sulla completa

    potresti anche usare delle subquery, ma la SP è più performante perché viene compilata
    Grazie, se riuscivo intanto ad averlo velocemente con la query anche se meno performante avrei preferito, nel frattempo avrei poi rivisto tutto con le SP
    informaticaromanord.it

  6. #6
    riesci a estrarre i TOP 10 per ogni utente?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2017
    residenza
    Formello
    Messaggi
    5
    Quote Originariamente inviata da optime Visualizza il messaggio
    riesci a estrarre i TOP 10 per ogni utente?
    No è proprio il risultato che desideravo estrarre i top X di ogni utente
    informaticaromanord.it

  8. #8
    codice:
    SELECT username, SUM(punti)
        FROM (
            SELECT username, punti, ROW_NUMBER() 
              OVER (Partition BY username
                    ORDER BY punti DESC ) AS RowNo
            FROM vista
            ) rs WHERE rs.RowNo <= 10        
            GROUP BY username

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2017
    residenza
    Formello
    Messaggi
    5
    GRAZIE!!

    Quote Originariamente inviata da optime Visualizza il messaggio
    codice:
    SELECT username, SUM(punti)
        FROM (
            SELECT username, punti, ROW_NUMBER() 
              OVER (Partition BY username
                    ORDER BY punti DESC ) AS RowNo
            FROM vista
            ) rs WHERE rs.RowNo <= 10        
            GROUP BY username
    informaticaromanord.it

  10. #10

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 © 2024 vBulletin Solutions, Inc. All rights reserved.