php - 想要显示按月分组的得分最高者的详细信息

标签 php mysql

我有一个数据表 数据库表看起来像

   id   |   name   |  userid  |  score   |      date      |
   ------------------------------------------------------------
    1   |   john   |    4     |   233    |  2014-02-02 
    2   |   mary   |    5     |  1256    |  2013-02-05  
    3   |   john   |    6     |   100    |  2013-03-08 
    4   |   elvis  |    7     |   123    |  2013-03-04 
    5   |   john   |    2     |   1234   |  2013-03-02

现在我想显示每个月最高得分者的详细信息。我的检索数据输出将是 json 格式

当前我的查询输出显示

"monthly_winners":[
    {
        "id":"1",
        "score":"233",
        "month":"Feb"
    },
    {
        "id":"3",
        "score":"100",
        "month":"Mar"
    }
],

但是会的

"monthly_winners":[
    {
        "id":"2",
        "score":"1256",
        "month":"Feb"
    },
    {
        "id":"5",
        "score":"1234",
        "month":"Mar"
    }
],

我无法理解我的查询出了什么问题

我的查询是

SELECT id,score, DATE_FORMAT(`date`,'%b' ) AS month FROM `winner`  GROUP BY month ORDER BY score DESC

最佳答案

SELECT x.*
  FROM my_table x
  JOIN 
     ( SELECT DATE_FORMAT(date,'%Y%m')yearmonth
            , MAX(score) max_score 
         FROM my_table 
        GROUP 
           BY DATE_FORMAT(date,'%Y%m')
     ) y
    ON y.yearmonth = DATE_FORMAT(x.date,'%Y%m')
   AND y.max_score = x.score;

关于php - 想要显示按月分组的得分最高者的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354077/

相关文章:

javascript - 在 PHP 中使用多个变量时如何更改 href?

mysql - 分组并计数不返回我期望的

php - 如何从 mysql 为 highcharts 创建正确的 json 数据格式

mysql - SQL 选择在 'in group' 中找到的第一个值

mysql - 如何在使用 IN 函数时获取 SELECT 查询中未返回任何行的值

php - 重新排序mysql中的记录顺序

php - 从页面 url 中选择带有 id 的表中的当前行

javascript - 浏览器上的敏感数据存储在哪里?

php - 通过ajax发送数据到下拉列表未完全设置为选定

MySQL选择多对多位置