mysql - 如何使用 groupby 对 mysql 进行排名
问题描述
伙计,我正在尝试对数据库中的一些数据进行排名,但我注意到当我将 group by 子句放入时它会出错;
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
知道如何通过一个一个计数来处理这个组吗?
谢谢!!
解决方案
在使用以下变量时,您需要使用子查询group by
:
select (@rank := @rank + 1) as rank, t.*
from (<your aggregation query here with order by>) t cross join
(select @rank := 0) params;
推荐阅读
- powerbi - 如何摆脱 PowerBI 中的 100% 计算
- python - 返回/输出不正确的值(Leetcode Q)
- ios - IOS Parse Homescreen when currentUser() != nil
- django - 请求设置 INSTALLED_APPS,但未配置设置
- azure-data-explorer - KUSTO 动态合并列/值
- javascript - 我需要将 IIFE 与 ES6 模块一起使用吗?
- sql - 用于分组行的 Oracle 分析查询
- javascript - 如何在没有 canvas API 或 filereader API 的情况下获取图像作为数据 URL
- python - 如何在pyspark中获取顺序ID
- python - 在没有 csv 模块的情况下编写 csv