Как оценить MySQL с групповым

0

Парень Я пытаюсь ранжировать некоторые данные из моей базы данных, и я замечаю, что все идет очень плохо, когда я ставлю группу по выражению;

SET @rank=0;

SELECT @rank:=@rank+1 AS RankSemGenero
    ,a.nome AS Artista
    ,f.nome AS Musica
    ,SUM(rnk.total) AS Tocadas
    ,rnk.mes AS Mes
    ,rnk.dia AS Dia
    ,current_timestamp() AS Criado_Em_Sem_Genero
    ,23 AS RankComGenero
    ,current_timestamp() AS Criado_Em_Com_Genero
    /*,CASE rnk.categoria
        WHEN 1 then 'AM'
        WHEN 2 then 'FM'
        WHEN 3 then 'Web'
        WHEN 4 then 'Comunitaria'
    END AS Categoria_Radio*/
    ,'Todas' AS TipoEmissora
    ,5 AS Relevancia_Emissora
    ,'Nacional' AS Local
    ,5 AS Relevancia_Local
    ,1 AS fl_ativo
FROM rnk201901 rnk
LEFT JOIN artistas a ON rnk.artista = a.id
LEFT JOIN fonogramas f ON rnk.fonograma = f.id
WHERE rnk.dia = 10
-- AND rnk.fonograma = 35876
-- GROUP BY rnk.fonograma
ORDER BY rnk.total DESC;

Этот код выше, приносящий информацию о правильном пути 1 до....

Но если я изменяю строку GROUP BY, я получаю что-то вроде: 1700 вместо 1.

GROUP BY rnk.fonograma

Любая идея, как обрабатывать эту группу, считая 1 на 1?

Спасибо!!

  • 0
    Что определяет порядок ранга?
  • 0
    это поле СУММ (rnk.total)
Показать ещё 7 комментариев
Теги:
ranking

1 ответ

0

Вам нужно использовать подзапрос, когда вы используете переменные с group by:

select (@rank := @rank + 1) as rank, t.*
from (<your aggregation query here with order by>) t cross join
     (select @rank := 0) params;
  • 0
    заказ не должен быть снаружи? или не имеет значения?
  • 0
    Также, вероятно, хотите отсортировать по SUM(rnk.total) AS Tocadas
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню