Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-几个月内每月排名_Mysql_Sql - Fatal编程技术网

MySQL-几个月内每月排名

MySQL-几个月内每月排名,mysql,sql,Mysql,Sql,我正在使用MySQL数据库。我希望在过去6个月内逐月生成客户排名 我刚刚得到了下面的查询,用于确定客户在每月民意调查中的排名。仅当日期范围在一个月内时,才正确报告排名 select t1.*, @rownum := @rownum + 1 AS RANK from ( select date_format(EVE_DATE,'%Y-%m') as MON_DATE

我正在使用MySQL数据库。我希望在过去6个月内逐月生成客户排名

我刚刚得到了下面的查询,用于确定客户在每月民意调查中的排名。仅当日期范围在一个月内时,才正确报告排名

    select 
        t1.*, 
        @rownum := @rownum + 1 AS RANK
    from    
        (
            select 
                date_format(EVE_DATE,'%Y-%m') as MON_DATE,
                CUST,
                SUM(POLL) as SCORE
            from
                TABLE
            where 
                EVE_DATE >= '2016-01-01' and EVE_DATE <= '2016-01-31'
            group by
                MON_DATE,
                CUST
            order by 
                SCORE desc
        )t1,
(SELECT @rownum := 0) r 
order by
        RANK DESC

我很感激你能帮我走

我认为您希望内部子查询仅按客户聚合,而不是按客户和日期聚合:

select t1.*, 
       @rownum := @rownum + 1 AS RANK
from (select CUST, SUM(POLL) as SCORE
      from TABLE
      where EVE_DATE >= '2016-01-01' and EVE_DATE <= '2016-01-31'
      group by CUST
      order by SCORE desc
     ) t1 cross join
     (SELECT @rownum := 0) r 
order by RANK DESC;

谢谢你,戈登。如果我漏掉日期,我就不会得到我所能看到的每月排名。我怎样才能做到这一点与一个小组,由每月请?
select t1.*, 
       @rownum := @rownum + 1 AS RANK
from (select CUST, SUM(POLL) as SCORE
      from TABLE
      where EVE_DATE >= '2016-01-01' and EVE_DATE <= '2016-01-31'
      group by CUST
      order by SCORE desc
     ) t1 cross join
     (SELECT @rownum := 0) r 
order by RANK DESC;