Visualizzazione risultati 1 fino 6 di 6

Discussione: Query rank della somma dei punti di più utenti

  1. #1
    Guest

    Predefinito Query rank della somma dei punti di più utenti

    Salve, mi trovo davanti ad una difficile query da fare.
    Praticamente questa è la mia tabella:


    Name|Band|Points
    Tizio |1 | 12
    Caio |2 | 24
    Sempronio |1|11

    Adesso quello che vorrei fare è sommare i punti e restituire il rank della band 1 (quindi in questo caso il rank sarà 2, se invece volessi selezionare il rank della band 2, il rank sarà 1). Come faccio?

    Grazie in anticipo, e se servono delucidazioni chiedete pure!
    Ultima modifica di enkantar : 17-12-2010 alle ore 23.00.32

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Rigiro per ottenere il ranking in mysql.

    Per la somma, SUM dovresti saperlo no?

  3. #3
    Guest

    Predefinito

    Ecco, il ranking non lo conoscevo! La somma si, la conoscevo!!! Vedo un pò!!! Grazie mille!


    EDIT:
    Niente, non mi riesce a combinarlo con la somma. Qualche aiutino?
    Ultima modifica di enkantar : 17-12-2010 alle ore 23.36.32

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Non ho la tua tabella per provare, ma mi sembrava che un GROUP BY `band` ed un ORDER BY SUM(`points`) risolvesse il problema di fare le somme ed ordinare. A quel punto il trick del rank dovrebbe funzionare comunque.

  5. #5
    Guest

    Predefinito

    Ho un pò modificato quella del tutorial che mi hai dato ed ho ottenuto questa:

    CREATE TABLE IF NOT EXISTS `sales` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `fruit` varchar(32) default NULL,
    `points` decimal(10,0) default NULL,
    `band` tinyint(4) NOT NULL default '0',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

    INSERT INTO `sales` (`id`, `fruit`, `points`, `band`) VALUES
    (1, 'apple', 13, 1),
    (2, 'orange', 2, 1),
    (3, 'pear', 19, 1),
    (4, 'banana', 4, 2),
    (5, 'cherry', 124, 2),
    (6, 'plum', 23, 3);
    Ho provato di tutto ma non mi riesce proprio!!


    SET @rank=0;
    SELECT @rank:=@rank+1 AS rank FROM sales
    GROUP BY `band` ORDER BY SUM(`points`) DESC;
    Mi dà errore nell'ORDER BY!


    EDIT: Risolto!
    Ultima modifica di enkantar : 18-12-2010 alle ore 00.18.20

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Shameless a darmi la tabella Se non avessi appena scritto la libreria finale per accedere al db non mi ci sarei neanche messo.

    edit: Vedo che hai risolto, dicci come

    Butto comunque qua la mia versione, se servisse:

    Codice:
    SET @num := 0
    
    SELECT @num := @num + 1 as `rank`, `band`, `total`  FROM (
      SELECT *, SUM(`points`) AS `total`
          FROM sales GROUP BY `band` ORDER BY `total` DESC
    ) `sottotab`
    Ultima modifica di dreadnaut : 18-12-2010 alle ore 00.33.46

Regole di scrittura

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